PHPバージョンを5.6から7.2にアップグレードしました。ログインページでcount()
関数を使用しました。例:
if(!empty($_POST['username']) && !empty($_POST['password'])):
$records = $conn->prepare('SELECT id,username,password FROM users WHERE username = :username');
$records->bindParam(':username', $_POST['username']);
$records->execute();
$results = $records->fetch(PDO::FETCH_ASSOC);
$message = '';
if(count($results) > 0 && password_verify($_POST['password'], $results['password']) ){
$_SESSION['user_id'] = $results['id'];
header("Location: /");
} else {
$message = 'Sorry, those credentials do not match';
}
endif;
検索後、これに似た質問と回答が見つかりましたが、それらはいくつかのファイルを変更したWordPressに関連していましたが、Pure PHPを使用して解決策が見つかりませんでした。
PDO fetch
は、失敗するとfalseを返します。したがって、このケースも確認する必要があります。
if($results && count($results) > 0 && password_verify($_POST['password'], $results['password']) ){
$_SESSION['user_id'] = $results['id'];
header("Location: /");
} else {
$message = 'Sorry, those credentials do not match';
}