2

全て、

と言うテキストエリアがあります

 <input type="submit">

そして、ユーザーが次のように入力した場合、

 here is my name  and my mail id is "a@x.com" 

データがサーバー側に投稿されると、データが受信されます。これは私の名前で、メール ID は「a@x.com」です。

二重引用符の後ろにバックスラッシュが追加されます。送信前にデータをエンコードする方法を次に示します。サーバー側で php を使用しています。

ありがとう。

4

5 に答える 5

3

これは、magic_quotes_gpc の開始です。削除するには、php.ini で無効にするか、stripslashes($your_var); を使用して削除します。

ただし、これは php の (お粗末な) セキュリティ機能であることに注意してください。ただし、データをデータベースに保存するときは、それぞれのエスケープ関数を使用して SQL インジェクションを防ぐ必要があり、ユーザーが投稿したデータを表示するときは、サニタイズ関数で xss インジェクションを防ぐ必要があります。 .

于 2010-02-14T20:13:24.243 に答える
2

Webホスティングプロバイダーがphp.iniファイルでマジッククォートを無効にすることを許可していない場合、PHPでもマジッククォートを取り除くことができます。このコードを PHP スクリプトの上に置きます。

    if (get_magic_quotes_gpc()) {
        function stripslashes_deep($value) {
            $value = is_array($value) ?
                     array_map('stripslashes_deep', $value) :
                     stripslashes($value);
            return $value;
        }

        $_POST = array_map('stripslashes_deep', $_POST);
        $_GET = array_map('stripslashes_deep', $_GET);
        $_COOKIE = array_map('stripslashes_deep', $_COOKIE);
        $_REQUEST = array_map('stripslashes_deep', $_REQUEST);
    }
于 2010-02-14T21:57:10.890 に答える
2

サーバーでディレクティブmagic_quote_gpcが有効になっているようです:

magic_quotes がオンの場合、すべての ' (シングル クォート)、" (ダブル クォート)、\ (バックスラッシュ)、および NUL はバックスラッシュで自動的にエスケープされます。


サーバーの構成で無効にできない場合の解決策は、次のとおりです。

  • これが有効かどうかを検出する
  • はいの場合、次を使用して、入力からエスケープを削除しますstripslashes

それについては、「マジック クォートを無効にする」セクションを参照してください。


もちろん、データを使用する前に適切にエスケープする必要があります。たとえば、SQL クエリに挿入する前に。

于 2010-02-14T20:14:14.787 に答える
1

システムでマジッククォートが有効になっている可能性があります。これは良いことではありません。

于 2010-02-14T20:15:08.937 に答える
1

php.ini で magic_quotes を無効にするかstripslashes($text)、PHP で使用してスラッシュを削除します。

于 2010-02-14T20:13:50.403 に答える