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

Barbara Streisand
Lepaskan: 2024-10-26 13:32:03
asal
513 orang telah melayarinya

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!