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().
password_verify() prend deux paramètres :
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.
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))){
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.
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))){
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!