Anda seharusnya memeriksa sandi mentah tanpa hash, sebagai password_verify()
melakukan hash ulang kata sandi mentah menggunakan rutin hash yang digunakan saat membuat kata sandi hash.
Jika Anda melihat hasil dari password_hash()
ada informasi yang disimpan dalam hash tentang rutin hash mana yang digunakan untuk membuat hash ini, dan bagaimana hash itu dihasilkan
$password = 'FredsTheMan';
$hash = password_hash($password, PASSWORD_BCRYPT);
if (password_verify($password, $hash)) {
return true;
} else {
return false;
}
Kesalahan umum lainnya di area ini adalah tidak memberikan karakter yang cukup pada kolom yang Anda gunakan pada tabel database untuk menampung hasil hash secara penuh
Hash yang dihasilkan menggunakan PASSWORD_BCRYPT adalah 60 karakter
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
Hati-hati, ketika hash lain disediakan di furure, hash tersebut dapat menghasilkan hash yang lebih panjang dari 60 karakter
Jadi singkatnya kode Anda harus
$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;
}