Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah 'method=\'post\' enctype=\'text/plain\'' menyebabkan ketidakserasian dengan tatasusunan $_POST PHP?

Mengapakah 'method=\'post\' enctype=\'text/plain\'' menyebabkan ketidakserasian dengan tatasusunan $_POST PHP?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 04:38:37968semak imbas

Why does

Menyingkap Misteri: Memahami Enigma Ketidakserasian "method="post" enctype="text/plain"

Di alam pembangunan web, selalunya ditemui bahawa data borang yang dihantar melalui kaedah POST mungkin gagal mencapai destinasi yang dimaksudkan apabila atribut enctype ditetapkan kepada "teks/plain." Menyelidiki selok-belok isu ini, kami berusaha untuk merungkai kerumitannya dan menemui punca asas di sebalik ketidakserasian ini.

Menyelidiki Kedalaman: Mengapa PHP Gagal Mengisi $_POST

Inti masalahnya terletak pada ketidakupayaan PHP untuk mengendalikan "teks/plain" pengekodan. Walaupun memberikan nilai kepada pembolehubah $HTTP_RAW_POST_DATA, PHP gagal mengisi tatasusunan $_POST dengan data borang Ini bukan kesilapan semata-mata tetapi keputusan reka bentuk yang disengajakan.

Membezakan GET dan POST. : Kisah Pengekodan

Adalah penting untuk membezakan antara Kaedah GET dan POST Dalam GET, pembolehubah membentuk rentetan pertanyaan dalam URL, yang memerlukan pengekodan URL. Tanpa mengira atribut enctype, penyemak imbas secara automatik mengekod URL pembolehubah GET, menjadikan "teks/plain" tidak berkesan.

Sebaliknya, dengan POST, pembolehubah bukan sebahagian daripada URL tetapi dihantar sebagai pengepala akhir permintaan HTTP. Di sini, pilihan pengekodan "teks/plain" dan "application/x-www-form-urlencoded" tersedia, tetapi hanya pilihan kedua yang menyediakan penyelesaian yang tidak samar-samar.

Kekaburan Bersembunyi Dalam "teks/ plain": A Cautionary Tale

Sedangkan "text/plain" nampaknya ringkas pengekodan, ia mempunyai perangkap tersembunyi. Ia tidak mempunyai mekanisme untuk menggambarkan antara berbilang nilai, yang berpotensi membawa kepada tafsiran samar-samar bagi data input. Sebagai contoh, mempertimbangkan borang berikut:

<form method="post" enctype="text/plain" action="proc.php">
<textarea name="input1">abc
input2=def</textarea>
<input name="input2" value="ghi" />
<input type="submit">
</form>

Jika borang ini menyerahkan data kepada skrip PHP menjangkakan nilai untuk "input1" dan "input2," timbul kesamaran:

print($HTTP_RAW_POST_DATA);

Bergantung pada tafsiran, output boleh menjadi:

  • input1=abcrninput2=def, input2=ghi
  • input1=abc, input2=defrninput2=ghi

Kekaburan seperti itu tiada dengan pengekodan "application/x-www-form-urlencoded", memastikan pengambilan data yang boleh dipercayai.

Atas ialah kandungan terperinci Mengapakah 'method=\'post\' enctype=\'text/plain\'' menyebabkan ketidakserasian dengan tatasusunan $_POST PHP?. 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