Ich habe folgende HTML / PHP Seite:
<?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>
Wie Sie sehen, wird das Formular gesendet und die erwartete Ausgabe ist ein POST-Array mit einem Array, das die ausgefüllten Werte enthält, und einem Eintrag "action" mit dem Wert "Go" (Schaltfläche). Egal welche Werte ich in die Felder eingebe; das ergebnis ist immer:
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
Irgendwie wird das Array mit dem Namen test geleert, die Variable "action" schafft es durch.
Ich habe die Live HTTP Headers-Erweiterung für Firefox verwendet, um zu überprüfen, ob die POST-Felder gesendet werden, und sie tun es. Die relevanten Informationen aus Live-HTTP-Headern (mit a, b und c als Werte in den Textfeldern):
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
test%5B1%5D=a&test%5B2%5D=b&test%5B3%5D=c&action=Go
Hat jemand eine Ahnung, warum das passiert? Ich bin total am ausflippen, es hat mich schon so viel Zeit gekostet ...
Aktualisieren:
Wir haben dies auf verschiedenen Servern versucht, auf Windows-Boxen funktioniert es, auf dem Ubuntu-Server mit PHP Version 5.2.4 (mit Suhosin) nicht. Es funktioniert sogar auf einem anderen Server, auch mit Ubuntu und der gleichen PHP-Version, auch mit Suhosin.
Ich habe die beiden Dateien unterschieden, dies ist die Ausgabe ( 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
>
In dieser Datei ist phps.ini der Server, auf dem es läuft, und php.ini ist der aktuelle Server. Sieht so aus, als gäbe es hier keine Probleme, oder?