Saya memiliki halaman HTML / PHP berikut:
<?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>
Seperti yang Anda lihat, formulir akan dikirimkan dan output yang diharapkan adalah array POST dengan satu array di dalamnya yang berisi nilai yang diisi dan satu entri "tindakan" dengan nilai "Go" (tombol). Namun, tidak peduli nilai apa yang saya masukkan di bidang; hasilnya selalu:
array(2) {
["test"]=>
string(0) ""
["action"]=>
string(2) "Go"
}
string(16) "test=&action=Go&"
Entah bagaimana, array bernama test dikosongkan, variabel "action" berhasil melewatinya.
Saya telah menggunakan ekstensi Header HTTP Langsung untuk Firefox untuk memeriksa apakah bidang POST dikirimkan, dan memang benar. Informasi yang relevan dari Header HTTP Langsung (dengan a, b dan c diisi sebagai nilai dalam kotak teks):
Content-Type: application/x-www-form-urlencoded
Content-Length: 51
test%5B1%5D=a&test%5B2%5D=b&test%5B3%5D=c&action=Go
Adakah yang tahu mengapa ini terjadi? Aku takut yang satu ini, sudah menghabiskan banyak waktu bagiku ...
Memperbarui:
Kami sudah mencoba ini pada server yang berbeda, pada kotak Windows tidak berfungsi, pada server Ubuntu dengan PHP versi 5.2.4 (dengan Suhosin), tidak. Ia bahkan bekerja pada server yang berbeda, juga dengan Ubuntu dan versi PHP yang sama, juga dengan Suhosin yang diinstal.
Saya telah membedakan dua file, ini adalah output ( 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
>
Dalam phps.ini ini adalah yang dari server tempat ia bekerja dan php.ini adalah yang saat ini. Sepertinya tidak ada masalah di sini, kan?