PHP で POST データを操作するとき、特にその中でWordPress 環境では、マジック クオートがオフになっているにもかかわらず、予期しない自動エスケープ動作が発生する可能性があります。このややこしい問題は、マジック クォートが無効になっている (get_magic_quotes_gpc() が 0 を返す) にもかかわらず、POST データが自動エスケープされると発生します。
詳細問題をさらに深く掘り下げると、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 中国語 Web サイトの他の関連記事を参照してください。