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'];
// }
📘 Naucz się w lekcji →