Apabila berurusan dengan permintaan AJAX POST, adalah membingungkan untuk menghadapi pembolehubah $_POST yang terlepas pada satu pelayan tetapi bukan yang lain. Mari kita siasat punca dan sediakan penyelesaian.
Isu ini timbul disebabkan petikan ajaib, yang didayakan pada pelayan Linux tetapi bukan pada pelayan Windows. Petikan ajaib secara automatik melepaskan aksara tertentu dalam input pengguna, termasuk petikan tunggal dan berganda, garis miring ke belakang dan nol.
Untuk menyelesaikan percanggahan ini, melumpuhkan petikan ajaib disyorkan. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa petikan ajaib akan dialih keluar daripada PHP 6 dan seterusnya. Sementara itu, anda boleh menyahaktifkannya semasa masa jalan, walaupun pendekatan ini hanya melumpuhkan pelarian aksara untuk sybase (UnixODBC).
Untuk kes yang menyahaktifkan petikan ajaib tidak boleh dilaksanakan, penyelesaiannya adalah untuk menyemak sama ada petikan ajaib adalah didayakan dan gunakan stripslashes() pada kandungan POST:
<code class="php">if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }</code>
Dengan mengikut langkah ini, anda boleh memastikan pembolehubah $_POST dikendalikan secara konsisten merentas pelayan yang berbeza, tanpa mengira tetapan petikan ajaib.
Atas ialah kandungan terperinci Mengapa Pembolehubah $_POST Saya Melarikan Diri pada Satu Pelayan Tetapi Tidak Lain?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!