首頁  >  文章  >  後端開發  >  為什麼即使禁用了魔術引號,PHP 中的 POST 資料也會自動轉義?

為什麼即使禁用了魔術引號,PHP 中的 POST 資料也會自動轉義?

DDD
DDD原創
2024-10-28 07:59:02921瀏覽

Why is POST Data Auto-Escaping in PHP Even When Magic Quotes are Disabled?

在PHP 中使用禁用的魔術引號揭開神秘的自動轉義Post 數據

在PHP 中處理POST 數據時,尤其是在PHP 中在WordPress 環境中,儘管關閉了魔術引號,仍有可能遇到意外的自動轉義行為。當 POST 資料自動轉義時,就會出現這個令人費解的問題,即使據說魔法引號被禁用(get_magic_quotes_gpc() 返回 0)。

WordPress 的影響

深入研究深入研究這個問題,很明顯 WordPress 在觸發這種自動轉義機制中發揮著至關重要的作用。當 WordPress 作為應用程式初始化過程的一部分進行引導時,其程式碼會幹擾 PHP 魔術引號的自然行為。

WordPress 包含攔截請求資料(包括 POST 資料)並執行某些操作的功能,其中之一正在轉義單引號 (')。即使在 php.ini 中禁用了魔術引號,此行為也會延續。

錯誤來源

對 WordPress 程式碼庫的仔細檢查發現了報告的錯誤在 WordPress Core Trac 系統下(票號 18322)。此問題與請求資料的錯誤處理有關,從而觸發不必要的轉義。

解決方案

幸運的是,有一個解決方案可以解決此自動轉義問題困境。 WordPress Codex 建議在對 POST 資料執行任何操作之前使用 stripslashes_deep() 函數「取消轉義」POST 資料。透過使用此功能,您可以有效地覆蓋 WordPress 的自動轉義並以原始格式擷取資料。

要實現此解決方案,請將以下程式碼新增至您的PHP 腳本:

<code class="php">$_GET       = array_map('stripslashes_deep', $_GET);
$_POST      = array_map('stripslashes_deep', $_POST);
$_COOKIE    = array_map('stripslashes_deep', $_COOKIE);
$_SERVER    = array_map('stripslashes_deep', $_SERVER);
$_REQUEST   = array_map('stripslashes_deep', $_REQUEST);</code>

此程式碼從所有超全域變數中刪除斜杠,確保在PHP 中訪問POST 資料時不會自動轉義。

以上是為什麼即使禁用了魔術引號,PHP 中的 POST 資料也會自動轉義?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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