Masalah:
Dalam PHP, pembolehubah $_POST diterima daripada Permintaan AJAX POST terlepas pada pelayan pengeluaran sementara ia kekal utuh pada pelayan tempatan. Pelayan tempatan menjalankan PHP 5.3.1 pada Windows, manakala pelayan pengeluaran menjalankan PHP 5.2.12 pada Linux.
Sebab:
Percanggahan antara kedua-dua pelayan ialah berkemungkinan disebabkan oleh penggunaan petikan ajaib pada pelayan pengeluaran.
Petikan Ajaib:
Petikan ajaib ialah ciri yang tidak digunakan dalam PHP yang secara automatik melepaskan aksara tertentu dalam $_GET pembolehubah , $_POST dan $_COOKIE untuk melindungi daripada suntikan SQL dan serangan lain. Watak yang dilepaskan termasuk:
Penyelesaian:
Untuk menyelesaikan isu dan memastikan tingkah laku yang konsisten merentas kedua-dua pelayan, anda boleh melumpuhkan petikan ajaib pada pelayan pengeluaran Ini boleh dilakukan sama ada secara global dalam php.ini atau per-skrip menggunakan set_magic_quotes_runtime().
Jika melumpuhkan petikan ajaib tidak dapat dilakukan, anda boleh mengalih keluar garis miring secara manual menggunakan fungsi stripslashes() pada mana-mana data POST yang anda ambil:
<code class="php">if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }</code>
Dengan melumpuhkan atau mengendalikan petikan ajaib dengan sewajarnya, anda boleh memastikan pembolehubah $_POST tidak terlepas pada pelayan pengeluaran, membenarkan permintaan AJAX POST berfungsi dengan betul.
Atas ialah kandungan terperinci Mengapa Pembolehubah AJAX POST Saya Melarikan diri pada Pelayan Pengeluaran Tetapi Tidak pada Pelayan Tempatan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!