Jde o to... Předpokládá se, že skladujete solené, hashované hesla
v databázi. Protože jsou individuálně solené na uživatele/heslo, nemůžete vyhledejte je přímo pomocí password = ?
, protože neznáte sůl, a proto nemůžete vypočítat odpovídající hash předem. Pokud to děláte správně, musíte nejprve načtěte záznam uživatele podle uživatelského jména a poté ověřte hash hesla pomocí načtené soli/hash. Pseudokód:
$user = fetch_from_database($_POST['username']);
if (!$user) {
throw new Exception("User doesn't exist");
}
if (!password_verify($_POST['password'], $user['password_hash'])) {
throw new Exception('Invalid password');
}
echo 'Welcome ', $user['name'];
Viz http://php.net/password_hash , http://php.net/password_verify .