ログイン機能の動作に問題があります。間違った資格情報を入力しても、常に true が返されます。これがなぜなのか誰か教えてもらえますか?
ここに関数があります
public function login($username, $password) {
global $pdo;
$users = new Users;
$user_id = $users->get_user_id($username);
$query = $pdo->prepare("SELECT * FROM `users` WHERE `username` = ? AND `password` = ?");
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->execute();
if (!$query) {
return false;
}
return $user_id;
}
そしてここにそれが実装されています。
if (isset($_SESSION['user_id']) === true) {
header('Location: backend.php');
exit();
} else {
if (empty($_POST) === false) {
$username = $_POST['username'];
$password = $_POST['password'];
if (empty($username) === true || empty($password) === true) {
$errors[] = 'All fields are required!';
} else {
$login = $users->login($username, $password);
if ($login === false) {
$errors[] = 'Username or password incorrect!';
} else {
$_SESSION['user_id'] = $login;
header('Location: backend.php');
exit();
}
}
}