Le truc, c'est que… Vous êtes censé stocker salé, haché mots de passe
dans la base de données. Puisqu'ils sont salés individuellement par utilisateur/mot de passe, vous ne pouvez pas recherchez-les directement avec password = ?
, car vous ne connaissez pas le sel et ne pouvez donc pas calculer le hachage correspondant à l'avance. Si vous le faites correctement, vous devez récupérez d'abord l'enregistrement de l'utilisateur par nom d'utilisateur, puis validez le hachage du mot de passe à l'aide du sel/hachage récupéré. Pseudo-code :
$user = fetch_from_database($_POST['username']);
if (!$user) {
throw new Exception("User doesn't exist");
}
if (!password_verify($_POST['password'], $user['password_hash'])) {
throw new Exception('Invalid password');
}
echo 'Welcome ', $user['name'];
Voir http://php.net/password_hash , http://php.net/password_verify .