これは私のコードです
$username = $_POST['user'];
$password = $_POST['pass'];
if (isset($_POST['user'])); {
$db = mysqli_connect('localhost', 'root', '', 'db');
if($query = mysqli_query($db, "SELECT `pass` FROM `accounts` WHERE `user` = '$username'")){
while($row = mysqli_fetch_assoc($query)){
$row['pass'] = $setpassword;
}
mysqli_free_result($query);
}
}
現在、フォームから、ユーザーが入力したユーザー名とパスワードを取得し、そのユーザー名を取得してそのユーザー名の行を見つけ、その行からパスワードを取得して、変数$setpasswordとして設定します。以下は、パスワードがデータベース上の指定されたユーザー名と一致するかどうかを確認するためのコードです。
if ($password=='') {
$verify = 0;
}
if ($password!='') {
if ($password!=$setpassword) {
$verify = 1;
}
if ($password==$setpassword) {
$verify = 2;
}
}
確認が...0の場合-何も入力されていないため、ログインフォームが表示されます。1-間違ったパスワードがログインフォームと一緒に表示されます。2-正しいパスワードが表示され、ユーザー名がセッション変数に割り当てられます。
ユーザーが存在しないユーザー名と、データベースにあるかどうかに関係なくパスワードを入力でき、検証されるという問題があります。
ユーザー名がデータベースに存在しないかどうかを確認するにはどうすればよいですか?