Ogólna praktyka jest następująca:
- Pobierz
hasło
hash z bazy danych, w którejnazwa użytkownika
=wprowadzona nazwa użytkownika. - Jeśli zostaną znalezione wiersze, oznacza to użytkownika
- Teraz porównujesz wprowadzone hasło z hashem przechowywanym w bazie danych.
Opiszę powyższy przepływ w jakimś pseudokodzie tutaj:
$query = SELECT password FROM users WHERE username = '$username'
$data = FETCH_THE_DATA($query);
if(password_verify($USER_INPUTTED_PASSWORD, $data['password'])) {
// password is correct
} else {
// password is in-correct
}
Notatki
- Przestań używać
mysql_*
Funkcje. Biblioteka jest przestarzała, ponieważ jest zawodna i zostanie usunięta w przyszłych wydaniach PHP.- Lepiej, jeśli użyjesz PDO lub Przygotowane zestawienia MySQLi
- Zawsze powinieneś przeczytać instrukcję -
password_verify()
, wyraźnie stwierdza, że porównujesz „hasło wprowadzone przez użytkownika” z zaszyfrowaną wersją, która jest przechowywana w Twojej bazie danych.