Je viens de mettre à jour mon Version PHP de 5.6 à 7.2. J'ai utilisé la fonction count()
dans ma page de connexion, exemple:
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;
Après des recherches, j'ai trouvé des questions et des réponses similaires à celles-ci, mais liées à WordPress ils ont modifié certains fichiers, mais je n'ai pas trouvé de solution à l'aide de Pure PHP.
PDO fetch
renvoie false en cas d'échec. Donc, vous devez vérifier ce cas aussi:
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';
}