Rumah >pembangunan bahagian belakang >tutorial php >Mengapakah 'method=\'post\' enctype=\'text/plain\'' menyebabkan ketidakserasian dengan tatasusunan $_POST PHP?
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:
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!