Tengo la siguiente página HTML / PHP:
<?php
if(empty($_SERVER['CONTENT_TYPE'])) {
$type = "application/x-www-form-urlencoded";
$_SERVER['CONTENT_TYPE'] = $type;
}
echo "<pre>";
var_dump($_POST);
var_dump(file_get_contents("php://input"));
echo "</pre>";
?>
<form method="post" action="test.php">
<input type="text" name="test[1]" />
<input type="text" name="test[2]" />
<input type="text" name="test[3]" />
<input type="submit" name="action" value="Go" />
</form>
Como puede ver, el formulario se enviará y la salida esperada es una matriz POST con una matriz que contiene los valores completados y una entrada "acción" con el valor "Ir" (el botón). Sin embargo, no importa qué valores ingrese en los campos; el resultado es siempre:
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
De alguna manera, la matriz llamada prueba se vacía, la variable "acción" lo logra.
He usado la extensión Live HTTP Headers para Firefox para verificar si los campos POST se envían, y lo hacen. La información relevante de los Encabezados HTTP en vivo (con a, byc rellenados como valores en los cuadros de texto):
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
test%5B1%5D=a&test%5B2%5D=b&test%5B3%5D=c&action=Go
¿Alguien tiene alguna idea de por qué sucede esto? Me estoy volviendo loco con esto, ya me ha costado mucho tiempo ...
Actualizar:
Hemos intentado esto en diferentes servidores, en los cuadros de Windows funciona, en el servidor Ubuntu con PHP versión 5.2.4 (con Suhosin), no funciona. Incluso funciona en un servidor diferente, también con Ubuntu y la misma versión de PHP, también con Suhosin instalado.
He diferenciado los dos archivos, esta es la salida ( diff php.ini phps.ini):
270c270
< memory_limit = 32M
---
> memory_limit = 16M ; Maximum amount of memory a script may consume (16MB)
415c415
< variables_order = "EGCSP"
---
> variables_order = "EGPCS"
491d490
< include_path = ".:"
1253a1253,1254
> extension=mcrypt.so
>
En este phps.ini es el del servidor en el que funciona y php.ini es el actual. Parece que no hay problemas aquí, ¿verdad?

