Obecná praxe je následující:
- Načtěte
password
hash z databáze, kde jeusername
=zadané uživatelské jméno. - Pokud jsou nalezeny řádky, pak existuje uživatel
- Nyní porovnáte zadané heslo s hashem uloženým v databázi.
Výše uvedený postup vám zde nastíním v nějakém pseudokódu:
$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
}
Poznámky
- Přestaňte používat
mysql_*
funkcí. Knihovna je zastaralá, protože je nespolehlivá a v budoucích verzích PHP bude odstraněna.- Je lepší používat CHOP nebo Připravená prohlášení MySQLi
- Vždy byste si měli přečíst příručku -
password_verify()
, jasně uvádí, že porovnáváte „heslo zadané uživatelem“ s hašovanou verzí, která je uložena ve vaší databázi.