Eu tenho a seguinte 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 você pode ver, o formulário será enviado e a saída esperada é uma matriz POST com uma matriz contendo os valores preenchidos e uma entrada "ação" com o valor "Ir" (o botão). No entanto, não importa quais valores eu insiro nos campos; o resultado é sempre:
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
De alguma forma, a matriz denominada test é esvaziada, a variável "action" faz isso.
Usei a extensão Live HTTP Headers do Firefox para verificar se os campos POST são enviados e o fazem. As informações relevantes dos cabeçalhos HTTP ativos (com a, bec preenchidos como valores nas caixas 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
Alguém tem alguma idéia de por que isso está acontecendo? Estou enlouquecendo com isso, já me custou muito tempo ...
Atualizar:
Nós tentamos isso em diferentes servidores, nas caixas do Windows que funcionam, no servidor Ubuntu com PHP versão 5.2.4 (com Suhosin), não. Até funciona em um servidor diferente, também com o Ubuntu e a mesma versão PHP, também com o Suhosin instalado.
Eu diferenciei os dois arquivos, esta é a saída ( 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
>
Neste, o phps.ini é o servidor em que trabalha e o php.ini é o atual. Parece que não há problemas aqui, certo?