Apabila menyerahkan borang HTML yang besar melalui POST, beberapa nilai $_POST mungkin tiada dalam PHP. Ini berlaku walaupun nilai terdapat dalam kandungan permintaan mentah yang boleh diakses melalui php://input.
Isu ini timbul kerana PHP mengubah suai aksara tertentu, seperti ruang dan titik, dalam nama medan untuk mematuhi register_globals yang tidak digunakan lagi. tetapan. Akibatnya, beberapa kunci mungkin diubah dan tidak terdapat dalam $_POST.
Untuk menyelesaikan isu ini, pertimbangkan penyelesaian berikut:
<code class="php">function getRealPOST() { $pairs = explode("&", file_get_contents("php://input")); $vars = array(); foreach ($pairs as $pair) { $nv = explode("=", $pair); $name = urldecode($nv[0]); $value = urldecode($nv[1]); $vars[$name] = $value; } return $vars; }</code>
Sebagai contoh, serpihan HTML:
<code class="html"><input type="text" name="my_field.value" value="test"></code>
Kod PHP:
<code class="php">$my_field_value = $_POST['my_field.value'];</code>
Atas ialah kandungan terperinci Mengapa Beberapa Nilai $_POST Hilang Apabila Hadir dalam php://input?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!