Pourquoi la fonction Password_Verify() ne vérifie-t-elle pas les mots de passe hachés ?

Patricia Arquette
Libérer: 2024-10-21 07:07:30
original
913 Les gens l'ont consulté

Why is the Password_Verify() Function Not Verifying Hashed Passwords?

PHP password_hash(), password_verify()

Dans votre script d'inscription, vous utilisez la fonction password_hash() de PHP pour crypter les mots de passe des utilisateurs et les stocker dans la base de données . Lorsque les utilisateurs tentent de se connecter, vous utilisez password_verify() pour comparer le mot de passe saisi avec la version hachée dans la base de données. Cependant, les mots de passe ne correspondent pas, ce qui indique un problème dans votre appel password_verify().

Utilisation de password_verify()

password_verify() prend deux paramètres :

  • $password : le mot de passe en texte brut saisi par l'utilisateur lors de la connexion.
  • $hash : le mot de passe haché stocké dans la base de données.

Il compare le mot de passe en texte brut avec la version hachée et renvoie vrai s'ils correspondent ou faux s'ils ne correspondent pas.

Votre problème de code

Dans votre script de connexion, vous nous transmettons le mot de passe en texte brut ($pwd) et le mot de passe haché ($password) à password_verify() :

if(($user_id == $p_num) && (password_verify($pwd, $password))){
Copier après la connexion
Copier après la connexion

Cependant, vous utilisez également var_dump() pour inspecter les variables pendant le comparaison, ce qui peut modifier leurs valeurs. La sortie var_dump() montre que le mot de passe en texte brut ($pwd) est modifié en "1", tandis que le mot de passe haché ($password) reste le même que celui stocké dans la base de données.

Utilisation correcte

Pour résoudre le problème, supprimez les appels var_dump() de votre code et assurez-vous que $pwd contient le mot de passe en texte brut saisi par l'utilisateur lors de la connexion. Votre code de connexion devrait ressembler à ceci :

if(($user_id == $p_num) && (password_verify($pwd, $password))){
Copier après la connexion
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!