運用サーバーで POST 変数がエスケープされる理由
AJAX POST リクエストからデータを受信するときに、運用環境で $_POST 変数がエスケープされている場合
マジック クオートは、受信したデータの一部である場合、一重引用符、二重引用符、バックスラッシュ、およびヌル文字を自動的にエスケープします。 POST リクエストなどの外部ソースから。この機能は、悪意のあるコードの挿入を防ぐためのセキュリティ対策ですが、生データを取得する必要があるときに問題を引き起こす可能性もあります。
問題を解決し、両方のサーバー間で一貫した動作を確保するには、いくつかのオプションがあります。 :
マジック クオートを無効にする
推奨される方法は、php.ini でマジック クオートを無効にすることです。これにより、POST 変数のエスケープがグローバルに無効になります。ただし、マジック クォーテーションは PHP 6 では削除されるため、それに依存しないように注意することが重要です。
スラッシュを削除
できない場合は、マジック クオートを無効にするには、stripslashes() 関数を使用して $_POST 変数からスラッシュを手動で削除できます。
if (get_magic_quotes_gpc()) { $my_post_var = stripslashes($_POST["my_post_var"]); }
これらの解決策のいずれかを実装することで、$_POST 変数がエスケープされないようにすることができます。運用サーバー上で動作し、ローカル サーバーと運用サーバーの両方が一貫して動作することを確認します。
以上が$_POST 変数が本番環境ではエスケープされるのに、ローカルではエスケープされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。