處理 AJAX POST 請求時,遇到 $_POST 變數在一台伺服器上轉義的情況令人費解但不是另一個。讓我們調查一下原因並提供解決方案。
問題是由於魔術引號引起的,魔術引號在 Linux 伺服器上啟用,但在 Windows 伺服器上未啟用。魔術引號會自動轉義使用者輸入中的某些字符,包括單引號和雙引號、反斜線和空字符。
要解決此差異,建議停用魔術引號。然而,需要注意的是,從 PHP 6 開始,魔術引號將會被刪除。同時,您可以在執行時間停用它們,儘管此方法僅停用 sybase (UnixODBC) 的字元轉義。
對於停用魔術引號不可行的情況,解決方法是檢查魔術引號是否啟用並將stripslashes() 應用於POST 內容:
<code class="php">if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }</code>
透過執行以下步驟,您可以確保$_POST 變數在不同伺服器上得到一致的處理,無論魔術引號設定為何。
以上是為什麼我的 $_POST 變數在一台伺服器上轉義,而在另一台伺服器上卻沒有轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!