首頁  >  文章  >  後端開發  >  為什麼我的 $_POST 變數在生產伺服器上轉義,但在本機伺服器上卻沒有轉義?

為什麼我的 $_POST 變數在生產伺服器上轉義,但在本機伺服器上卻沒有轉義?

Barbara Streisand
Barbara Streisand原創
2024-10-27 10:01:03470瀏覽

Why are My $_POST Variables Escaped on My Production Server But Not My Local Server?

為什麼PHP 中的$_POST 變量會發生轉義

問題:

為什麼$從AJAX POST 請求接收資料時,_POST 變數在PHP 腳本中被轉義?這種情況發生在 Linux 上執行 PHP 5.2.12 的生產伺服器上,但不會發生在 Windows 上執行 PHP 5.3.1 的本機伺服器上。

答案:

魔術引號,特別是 magic_quotes_gpc,可能在 Linux 伺服器上啟用。

說明:

魔術引號自動轉義某些字元(單引號和雙引號,從外部來源(包括POST 請求)接收的資料中包含反斜槓和空字節)。當這些引號開啟時,您應該停用它們,因為它們會影響 POST 變數的引用方式。

可能的解決方案:

  • 禁用魔術引號在php.ini 中: 如果可能,請在php.ini 配置文件中禁用魔術引號。
  • 使用 stripslashes(): 使用 get_magic_quotes_gpc() 檢查魔術引號是否啟用。如果是,請對從POST 變數取得的任何資料使用stripslashes():
<code class="php">if (get_magic_quotes_gpc()) {
    $my_post_var = stripslashes($_POST["my_post_var"]);
}</code>

注意: 此解決方案從所有POST 資料中刪除斜杠,因此選擇性地使用它根據您的要求。

以上是為什麼我的 $_POST 變數在生產伺服器上轉義,但在本機伺服器上卻沒有轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn