Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa pembolehubah PHP POST hilang dari $_POST walaupun terdapat dalam php://input?

Mengapa pembolehubah PHP POST hilang dari $_POST walaupun terdapat dalam php://input?

Linda Hamilton
Linda Hamiltonasal
2024-10-30 06:44:02305semak imbas

Why are PHP POST variables missing from $_POST despite being present in php://input?

Pembolehubah POST PHP Hilang Walaupun Kehadiran dalam php://input

Pengenalan:

Semasa memproses penyerahan borang dalam PHP melalui permintaan POST, ada kemungkinan untuk menghadapi gelagat pelik apabila nilai tertentu tidak terdapat dalam superglobal $_POST walaupun ia hadir dalam permintaan mentah melalui php://input.

Penerangan Masalah:

Isu timbul apabila menyerahkan borang HTML yang besar dengan medan bersarang. Walaupun data borang dihantar ke pelayan, beberapa nilai mungkin gagal diisi dalam $_POST. Pemeriksaan php://input mendedahkan bahawa nilai ini sememangnya disertakan dalam permintaan tetapi nampaknya dipenggal dalam $_POST.

Punca:

Tingkah laku itu dikaitkan kepada pengubahsuaian PHP bagi medan POST yang mengandungi aksara seperti titik, ruang, kurungan segi empat sama terbuka, dsb. Aksara ini sebelum ini diproses oleh konfigurasi register_globals yang telah ditamatkan.

Penyelesaian:

Untuk menangani isu ini, anda boleh menggunakan penyelesaian seperti berikut:

<code class="php">// Get real POST variables
function getRealPOST() {
    $pairs = explode("&amp;", 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>

Fungsi ini menghuraikan permintaan POST mentah dalam php://input dan membina semula pembolehubah POST dengan nama medan asal, mengambil kira penggantian aksara dibuat oleh PHP.

Atas ialah kandungan terperinci Mengapa pembolehubah PHP POST hilang dari $_POST walaupun terdapat dalam php://input?. 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