私はMysqliとPHPを初めて使い、手続き型ではなくオブジェクト指向のコードを使いたいと思っています。私はmysqli_real_escape_stringをオブジェクト指向の方法に変換するのには苦労しています。以下のコードでは、オブジェクト指向の使い方がわからず、Googleの検索では私が探している回答を提供していないので、手順コードを使用しました。mysqliオブジェクト指向の実エスケープ文字列
$sql = "SELECT email FROM `users` WHERE email = '".mysqli_real_escape_string($link, $_POST['email'])."'LIMIT 1";
$result = $link->query($sql);
if($result->num_rows > 0) {
echo "The email " .$_POST['email']. " is already taken";
} else {
echo $_POST['email'];
}
}
は、現実の世界では、私は、入力フィールドの検証のいくつかの並べ替えを持っているだろうが、自分のために目的を学ぶために、私は何の検証を持っていません。つまり、誰かが登録ページに行くなら、SQLインジェクションを使うことができます。私は電子メールアドレスが存在するかどうかをチェックするコード内でそれを防止しようとしています。私が読んだところでは、mysqli_real_escape_stringはSQLインジェクションを防ぐために使われ、htmlspecialcharsのようなものを使うとXSSを防ぐことができます。私はこの特定の例でSQLインジェクションを防止しようとしています。
'string mysqli :: escape_string(string $ escapestr)' http://php.net/manual/en/mysqli.real-escape-stringに変換されます。php 'string mysqli :: real_escape_string(string $ escapestr)'^RTM。 –
あなたは、スペースもすべきで、このうち '$ _POST [「メール」])。"それは構文エラーを引き起こし、ひいては、'[email protected] 1 'として読むことを意味してますので、 '$ _POST [' LIMIT'データを選択して[メール]])。「」LIMIT 1 ' –
より良い方法は、私はW3学校からレコードを挿入するために準備されたステートメントを使用する方法のコードを持って準備された文 – tkausl