2016-08-22 4 views
2

MySQLiを使って文字列をエスケープするための基本的なラッパー関数を書きました。これを使用すると何か問題はありますか?元のものよりも良いですか?それは役に立ちますか?このカスタムMySQLiエスケープPHP関数の使用に何か問題はありますか?

この関数は、MySQLi接続である$connとエスケープする文字列である&$varの2つの引数をとります。

function escapestr($conn, &$var){ 
    $var = $conn->real_escape_string($var); 
    return $var; 
} 

使用法:

$conn = mysqli_connect("localhost", "username", "password", "my_favourite_db"); 
$userInput = $_GET["input"]; // value: this is my "inputted" string 
$userInput = escapestr($conn, $userInput); // value: this is my \"inputted\" string 

それとも、それは直接変数を更新することができます。

$conn = mysqli_connect("localhost", "username", "password", "my_favourite_db"); 
$userInput = $_GET["input"]; // value: this is my "inputted" string 
escapestr($conn, $userInput); // value: this is my \"inputted\" string 
+6

完全に無意味な機能。あなたがセキュリティを心配している場合は、とにかく準備されたステートメントを使用する必要があります。 –

+1

'$ var'が"参照渡し "の___と__が関数から返されているのはなぜですか? –

+1

エスケープでやっていることがわからないものは悪いです。これは古典的な例です。その変数が2回使用されると深刻な問題を引き起こす可能性のある元の文字列をmangleするので、元の文字列よりも悪くなります。 – tadman

答えて

6

これを使用してに何か問題はありますか?

はい。ホイールを再作成する代わりにprepared statements(パラメータ化された文またはパラメータ化されたクエリ)を使用する必要があります。

オリジナルよりも優れていますか?

あなたがしたことはすべて、関数に関数をラップすることでした。これが有用な場所は時々ありますが、これはひとつではありません。

有用でしょうか?

+0

ハハ、これは意味がある –

関連する問題