$_POST 変数が本番サーバーではエスケープされるのに、ローカル サーバーではエスケープされないのはなぜですか?

Barbara Streisand
リリース: 2024-10-27 10:01:03
オリジナル
565 人が閲覧しました

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

PHP で $_POST 変数にエスケープが発生する理由

質問:

$ はなぜAJAX POST リクエストからデータを受信するときに、PHP スクリプトで _POST 変数がエスケープされていますか?これは、Linux 上で PHP 5.2.12 を実行している運用サーバーでは発生しますが、Windows 上で PHP 5.3.1 を実行しているローカル サーバーでは発生しません。

答え:

魔法の引用符、特に magic_quotes_gpc は、Linux サーバーで有効になっている可能性があります。

説明:

マジック クオートは、特定の文字 (一重引用符と二重引用符、 POST リクエストなど、外部ソースから受信したデータ内のバックスラッシュ、ヌル バイトなど)。これらの引用符がオンになっている場合は、POST 変数の参照方法に影響するため、無効にする必要があります。

考えられる解決策:

  • マジック クオートを無効にするin php.ini: 可能であれば、php.ini 設定ファイルでマジック クオートを無効にします。
  • stripslashes(): マジック クオートが有効かどうかを get_magic_quotes_gpc() で確認します。含まれている場合は、POST 変数から取得したデータに対してtripslashes() を使用します:
<code class="php">if (get_magic_quotes_gpc()) {
    $my_post_var = stripslashes($_POST["my_post_var"]);
}</code>
ログイン後にコピー

注: このソリューションはすべての POST データからスラッシュを削除するため、選択に基づいて使用します。

以上が$_POST 変数が本番サーバーではエスケープされるのに、ローカル サーバーではエスケープされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート