Saken är... Du ska lagra saltad, hashad lösenord
i databasen. Eftersom dessa är individuellt salta per användare/lösenord kan du inte slå upp dem direkt med password = ?
, eftersom du inte känner till saltet och därför inte kan beräkna matchande hash i förväg. Om du gör det här på rätt sätt måste du hämta användarposten efter användarnamn först, validera sedan lösenords-hash med hjälp av den hämtade salt/hash. Pseudokod:
$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'];
Se http://php.net/password_hash , http://php.net/password_verify .