Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le mot de passe n'est pas vérifié à l'aide de la fonction password_verify

On ne peut pas rechercher un hachage de mot de passe salé dans une base de données. Pour calculer le hachage, vous avez besoin de la fonction password_hash() comme vous l'avez déjà fait correctement dans votre instruction d'insertion.

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($password, PASSWORD_DEFAULT);

Pour vérifier un mot de passe, vous devez d'abord effectuer une recherche par nom d'utilisateur uniquement (utilisez une requête préparée pour éviter l'injection sql) :

$sql = 'select * from admin where username = ?';
$db->prepare($sql);
$db->bind_param('s', $first);

Lorsque vous obtenez enfin le hachage stocké de la base de données, il peut être vérifié comme ceci :

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($password, $existingHashFromDb);