Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa pembolehubah $_POST saya terlepas dalam PHP, dan bagaimana saya boleh membetulkannya?

Mengapa pembolehubah $_POST saya terlepas dalam PHP, dan bagaimana saya boleh membetulkannya?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 20:31:29638semak imbas

Why are my $_POST variables being escaped in PHP, and how can I fix it?

Menggali Pembolehubah $_POST yang Dilepaskan dalam PHP

Apabila bekerja dengan permintaan AJAX POST dalam PHP, adalah penting untuk memahami potensi isu yang mungkin timbul , terutamanya apabila pembolehubah dalam tatasusunan $_POST secara tidak dijangka akan terlepas. Mari kita selidiki sebab di sebalik fenomena ini dan terokai cara untuk menyelesaikannya untuk tingkah laku yang konsisten merentas pelayan yang berbeza.

Penyebab di sebalik pelarian itu terletak pada ciri petikan ajaib PHP, yang apabila didayakan, secara automatik melarikan diri daripada aksara tertentu, termasuk tunggal petikan, petikan berganda, garis miring ke belakang dan aksara nol. Ini bertujuan sebagai langkah keselamatan untuk mengelakkan suntikan kod berniat jahat, tetapi ia juga boleh membawa kepada akibat yang tidak diingini apabila mengendalikan data POST.

Pada pelayan yang petikan ajaib didayakan, seperti pelayan Linux yang anda nyatakan, setiap nilai dalam $_POST akan dikeluarkan secara automatik. Ini boleh menjadi masalah jika kod anda menjangkakan data yang tidak dapat dilepaskan, kerana ia akan mengakibatkan tingkah laku yang tidak dijangka.

Untuk menangani isu ini, anda mempunyai dua pilihan:

  1. Lumpuhkan Petikan Ajaib : Ini adalah pendekatan yang disyorkan. Anda boleh melumpuhkan petikan ajaib dengan menetapkan magic_quotes_gpc kepada Mati dalam fail konfigurasi php.ini anda.
  2. Gunakan stripslashes(): Jika melumpuhkan petikan ajaib bukan pilihan, anda boleh mengalih keluar escape secara manual aksara menggunakan fungsi stripslashes() sebelum bekerja dengan pembolehubah $_POST. Ini melibatkan pembalut pembolehubah $_POST yang anda mahu gunakan dalam stripslashes(), seperti:
<code class="php">$my_post_var = stripslashes($_POST["my_post_var"]);</code>

Dengan mengikuti langkah ini, anda boleh memastikan tingkah laku yang konsisten dalam mengendalikan pembolehubah POST merentas pelayan yang berbeza, tanpa mengira tetapan petikan ajaib.

Atas ialah kandungan terperinci Mengapa pembolehubah $_POST saya terlepas dalam PHP, dan bagaimana saya boleh membetulkannya?. 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