が働いている:ログインフォームの安全措置
$username = trim($_POST['username']);
$password = trim($_POST['password']);
$pass=md5($password);
$stmt = $mysqli->prepare("SELECT id FROM users WHERE username = ? AND password = ?");
$stmt->bind_param('ss', $username, $pass);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id);
$stmt->fetch();
if ($stmt->num_rows == 1) { $_SESSION['name']=$id; echo'user logged in';}
else {echo'invalid username/password';}
$stmt->close();
しかし、私は、あまりにも何か他のものを使用する必要がありますか?それとも十分?私は文を準備するのが初めてであるので、構文がうまく書かれているかどうかを知りたいと思います。
1つは、md5ではなくpassword_hash/password_verifyを使用する必要があります。 (すでにパスワードをmd5として保存していれば動作しません) –
準備文はどうですか?書きましたか? – rimas
用意されたステートメントの部分はうまく見えますが、 'trim'で削除される先行/後ろのスペースがないことを確認するためにパスワードを保存するときは、必ず確認する必要があります。 password_hash + password_verifyを使用するように切り替える場合は、ユーザー名のみに基づいて選択してレコードをフェッチし、パスワードを確認するだけで少し変更する必要があります。 –