Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Das Passwort wird nicht mit der Funktion password_verify verifiziert

Man kann in einer Datenbank nicht nach einem gesalzenen Passwort-Hash suchen. Um den Hash zu berechnen, benötigen Sie die Funktion password_hash(), wie Sie es bereits in Ihrer Insert-Anweisung richtig gemacht haben.

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

Um ein Passwort zu überprüfen, müssen Sie zuerst nur nach Benutzernamen suchen (verwendet eine vorbereitete Abfrage, um eine SQL-Einschleusung zu vermeiden):

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

Wenn Sie endlich den gespeicherten Hash aus der Datenbank erhalten haben, können Sie ihn wie folgt überprüfen:

// 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);