Mysql
 sql >> Database >  >> RDS >> Mysql

La password non è verificata utilizzando la funzione password_verify

Non è possibile cercare un hash di password salted in un database. Per calcolare l'hash hai bisogno della funzione password_hash() come hai già fatto correttamente nella tua istruzione di inserimento.

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

Per controllare una password, devi prima cercare solo per nome utente (usata una query preparata per evitare l'iniezione di sql):

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

Quando finalmente hai ottenuto l'hash archiviato dal database, puoi verificarlo in questo modo:

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