Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Pembolehubah AJAX POST Saya Melarikan diri pada Pelayan Pengeluaran Tetapi Tidak pada Pelayan Tempatan?

Mengapa Pembolehubah AJAX POST Saya Melarikan diri pada Pelayan Pengeluaran Tetapi Tidak pada Pelayan Tempatan?

Barbara Streisand
Barbara Streisandasal
2024-10-26 13:32:03514semak imbas

Why are My AJAX POST Variables Escaped on the Production Server But Not on the Local Server?

Mengapa Pembolehubah $_POST Melarikan Diri dalam PHP?

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:

  • Petikan tunggal (')
  • Petikan berganda (")
  • Bulatan belakang ()
  • Aksara nol (NUL)

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!

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