password_verify
funkcja
Sprawdza czy podane hasło pasuje do hasha stworzonego przez password_hash. Zwraca true lub false. Porównanie jest timing-safe.
password_verify(string $password, string $hash): bool
password_verify weryfikuje czy podane hasło pasuje do hasha przechowywanego w bazie danych (stworzonego wcześniej przez password_hash). Wyciąga algorytm i sól z hasha, oblicza skrót podanego hasła i porównuje wyniki w sposób odporny na ataki czasowe (timing-safe). Zwraca true jeśli hasła pasują, false w przeciwnym razie.
Nie musisz znać użytej soli ani algorytmu — password_verify czyta wszystkie potrzebne informacje z hasha.
<?php
declare(strict_types=1);
// Symulacja: hash przechowywany w bazie danych
$hashZBazy = password_hash('MojeHaslo123', PASSWORD_DEFAULT);
// Przy logowaniu — sprawdź hasło podane w formularzu:
$podaneHaslo = 'MojeHaslo123';
if (password_verify($podaneHaslo, $hashZBazy)) {
echo 'Hasło poprawne — zalogowano!';
} else {
echo 'Złe hasło.';
}
// wynik: Hasło poprawne — zalogowano!
// Przykład z błędnym hasłem:
var_dump(password_verify('inneHaslo', $hashZBazy)); // wynik: bool(false)
// Typowe użycie w logowaniu:
// $user = $repo->znajdzPoLoginie($login); // SELECT z bazy
// if ($user && password_verify($podaneHaslo, $user['haslo_hash'])) {
// session_regenerate_id(true);
// $_SESSION['user_id'] = $user['id'];
// }