In Ihrem Registrierungsskript verwenden Sie die PHP-Funktion „password_hash()“, um Benutzerpasswörter zu verschlüsseln und in der Datenbank zu speichern . Wenn Benutzer versuchen, sich anzumelden, verwenden Sie „password_verify()“, um das eingegebene Passwort mit der gehashten Version in der Datenbank zu vergleichen. Allerdings stimmen die Passwörter nicht überein, was auf ein Problem in Ihrem Password_verify()-Aufruf hinweist.
password_verify() benötigt zwei Parameter:
Es vergleicht das Klartext-Passwort mit der gehashten Version und gibt true zurück, wenn sie übereinstimmen, oder false, wenn nicht.
In Ihrem Anmeldeskript Sie Sie übergeben das Klartext-Passwort ($pwd) und das gehashte Passwort ($password) an password_verify():
if(($user_id == $p_num) && (password_verify($pwd, $password))){
Sie verwenden jedoch auch var_dump(), um die Variablen während des Vorgangs zu überprüfen Vergleich, der ihre Werte verändern kann. Die Ausgabe von var_dump() zeigt, dass das Klartext-Passwort ($pwd) auf „1“ geändert wird, während das gehashte Passwort ($password) dasselbe bleibt, wie es in der Datenbank gespeichert ist.
Um das Problem zu beheben, entfernen Sie die var_dump()-Aufrufe aus Ihrem Code und stellen Sie sicher, dass $pwd das Klartext-Passwort enthält, das der Benutzer bei der Anmeldung eingegeben hat. Ihr Login-Code sollte etwa so aussehen:
if(($user_id == $p_num) && (password_verify($pwd, $password))){
Das obige ist der detaillierte Inhalt vonWarum überprüft die Funktion Password_Verify() keine gehashten Passwörter?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!