1
function escape($value){
    $magic_quotes_active = get_magic_quotes_gpc();
    $new_enough_php = function_exists("mysql_real_escape_string");
      if ($new_enough_php) {
        if ($magic_quotes_active) {
            $value = stripslashes($value);
            $value = mysql_real_escape_string($value);
        }
        elseif (!$magic_quotes_active) {
            $value = addslashes($value);
        }
        return $value;
    }
}

長い間、文字列をエスケープするために上記の関数を使用していますか?さて、私はその関数を使用する必要があるかどうかを尋ねたいと思います(ほとんどのバージョンのPHPで機能する文字列をエスケープするためにインターネット上でそれを見つけました)?またはそれは物事を不必要に複雑にしますか?

4

2 に答える 2

5

いいえ、実際には、このような関数の使用は絶対に避けてください。あなたが調べなければならないのは、準備されたステートメントの使用です。いずれかの関数のドキュメントページ
を確認し、赤い警告に注意してください。代わりに、拡張機能が非推奨プロセスを開始したか、提案されています。mysql_*PDOmysqli_*

インジェクションを回避するために、プリペアドステートメントを使用する必要があります...この問題に関するいくつかの記事を読み、との両方の利点を調べてPDOくださいmysqli_*。つまり、私は前進する唯一の方法を恐れています...

于 2012-10-28T12:20:56.050 に答える
0

そのような関数は必要ありません。通常はを使用するだけで十分addslashes(...)です。特別な場合は、@ EliasVanOotegemが推奨するようなドキュメントを参照してください

于 2012-10-28T12:25:12.353 に答える