Det er meningen, at du skal tjekke den rå uhashed adgangskode som password_verify()
foretager genhasningen af den rå adgangskode ved hjælp af hash-rutinen, der blev brugt ved oprettelse af den hash-kodede adgangskode.
Hvis du ser på resultatet af password_hash()
der er gemt information i hashen om, hvilken hash-rutine der blev brugt til at oprette denne hash, og hvordan den blev genereret
$password = 'FredsTheMan';
$hash = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password, $hash)) {
return true;
} else {
return false;
}
En anden almindelig fejl i dette område er ikke at give den kolonne, du bruger i databasetabellen nok tegn til at indeholde det fulde resultat af hashen
Den hash, der genereres ved hjælp af PASSWORD_BCRYPT, er på 60 tegn
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Pas på, når andre hashes leveres i fururen, kan de resultere i en hash på mere end 60 tegn
Så kort fortalt skal din kode være
$this->db->select('password');
$this->db->from('usersdetails');
$this->db->where('email', $email);
$this->db->limit(1);
$query = $this->db->get();
$pwd_from_db = $query->row()->password;
if (password_verify($this->input->post('password'), $pwd_from_db)) {
return true;
} else {
return false;
}