Apabila menyerahkan borang HTML melalui permintaan POST, semua nilai yang diserahkan akan mengisi superglobal $_POST. Walau bagaimanapun, dalam sesetengah kes, nilai tertentu mungkin tiada.
Apakah yang Menyebabkan Nilai Hilang?
PHP mengubah suai nilai yang mengandungi aksara tertentu secara automatik (cth., ruang, titik, kurungan segi empat terbuka) untuk memastikan keserasian dengan ciri register_globals yang telah ditamatkan. Pengubahsuaian ini boleh menyebabkan nilai diabaikan daripada $_POST.
Menyelesaikan Isu
Untuk menyelesaikan isu ini, pelbagai penyelesaian boleh digunakan. Satu kaedah yang popular ialah membaca data POST mentah menggunakan file_get_contents('php://input') dan menghuraikannya secara manual untuk mengekstrak nilai yang hilang.
Di bawah ialah contoh fungsi yang boleh digunakan untuk "membetulkan" nilai $_POST:
<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>
Dengan menggunakan fungsi ini atau penyelesaian yang serupa, anda boleh memastikan bahawa semua nilai yang diserahkan dihuraikan dengan betul dan tersedia dalam tatasusunan $_POST.
Atas ialah kandungan terperinci Mengapakah beberapa nilai $_POST hilang dalam PHP dan bagaimana saya boleh membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!