Problème de hachage de mot de passe en PHP - password_verify() renvoie toujours false
P粉481035232
2023-07-30 14:51:07
<p>J'ai un problème avec le hachage de mot de passe en PHP. J'utilise la fonction password_hash() pour hacher le mot de passe administrateur lors de l'inscription et le stocker dans la base de données. Cependant, lors de la connexion, lorsque j'essaie de vérifier le mot de passe à l'aide de password_verify(), cela renvoie toujours false, même si je suis sûr que le mot de passe est correct. </p><p>Voici un résumé de mon code : </p><p><br /></p>
<pre class="brush:php;toolbar:false;">$adminPassword = "test123";
$adminPasswordHash = mot de passe_hash($adminPassword, PASSWORD_BCRYPT);
// ... Stocker $adminPasswordHash dans la base de données ...
// Lors de la connexion :
$adminInputPassword = "test123";
$adminPasswordHashVERIFY = "$2y$10$o4qspRTirOSdyGtwHCxt6ee2i0BNChl3mEPazxVbmb534kw3ACHCm";
if (password_verify($adminInputPassword, $adminPasswordHashVERIFY)) {
echo "Le mot de passe est correct !";
} autre {
echo "Le mot de passe est incorrect !";
}</pré>
<p>Je me suis assuré que $adminPassword et $adminInputPassword avaient la même valeur, mais la validation renvoie toujours false. J'ai également essayé d'utiliser la fonction password_hash() et de passer PASSWORD_DEFAULT comme paramètre au lieu de PASSWORD_BCRYPT, mais le résultat était le même. </p><p>Est-ce que j'ai raté quelque chose pendant le processus de génération de hachage ou de vérification ? Toute aide ou aperçu de ce problème serait grandement apprécié. Merci! </p><p><br /></p>
J'ai trouvé le problème ! Le problème semble être dû à l'utilisation de guillemets doubles ("") dans la variable $adminPasswordHashVERIFY. Lorsque des guillemets doubles sont utilisés, PHP interprète la chaîne et remplace les variables qu'elle contient. Puisqu'il n'y a pas de variable nommée $fReIQ, PHP la traite en tant que variables définies, ce qui entraîne des valeurs de hachage incorrectes lors de la validation.
Pour résoudre ce problème, utilisez des guillemets simples (') autour du mot de passe haché dans la variable $adminPasswordHashVERIFY. Cela garantit que le mot de passe haché est traité comme une chaîne normale. . Au lieu d'être interprété par PHP
Maintenant, si vous essayez le code suivant, vous obtiendrez le résultat "Mot de passe correct ! ".