Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapakah Nilai $_POST Saya Hilang daripada Skrip PHP Saya?

Mengapakah Nilai $_POST Saya Hilang daripada Skrip PHP Saya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-28 12:18:02979semak imbas

Why are My $_POST Values Missing from My PHP Script?

Nilai PHP $_POST hilang daripada php://input

Walaupun menerima data borang melalui permintaan POST, nilai tertentu gagal muncul dalam tatasusunan PHP $_POST. Penyahpepijatan mendedahkan kehadiran nilai ini dalam rentetan permintaan mentah yang diambil melalui php://input.

Punca:

PHP mengubah nama medan yang mengandungi aksara tertentu (ruang, titik, kurungan segi empat terbuka, dsb.) untuk mematuhi register_globals yang telah ditamatkan.

Penyelesaian:

  • Lumpuhkan register_globals: Sejak ini tetapan ditamatkan, lumpuhkannya dalam fail konfigurasi php.ini.
  • Gunakan fungsi penyelesaian: Gunakan fungsi yang menghuraikan rentetan permintaan mentah, mengekstrak dan menyahkod nilai untuk membina yang baharu Tatasusunan $vars yang mengandungi nilai yang hilang. Berikut ialah contoh:
<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>

Atas ialah kandungan terperinci Mengapakah Nilai $_POST Saya Hilang daripada Skrip PHP Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn