Rumah > pembangunan bahagian belakang > tutorial php > 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
Lepaskan: 2024-10-30 06:44:02
asal
462 orang telah melayarinya

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>
Salin selepas log masuk

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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan