Sagen er... Du skal opbevare saltet, hashed adgangskoder
i databasen. Da disse er individuelt saltede pr. bruger/adgangskode kan du ikke slå dem op direkte med password = ?
, fordi du ikke kender saltet og derfor ikke kan beregne den matchende hash på forhånd. Hvis du gør dette ordentligt, skal du hent først brugerregistreringen efter brugernavn, og valider derefter kodeords-hashen ved hjælp af den hentede salt/hash. Pseudokode:
$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 .