Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak korzystać z metody password_hash() w php..?

Powinieneś sprawdzić surowe niezaszyfrowane hasło, ponieważ password_verify() wykonuje ponowne zaszyfrowanie surowego hasła przy użyciu procedury mieszania używanej podczas tworzenia zaszyfrowanego hasła.

Jeśli spojrzysz na wynik password_hash() w hashu przechowywane są informacje o tym, która procedura skrótu została użyta do utworzenia tego skrótu i ​​jak został wygenerowany

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

if (password_verify($password, $hash)) { 
   return true;
} else {
    return false;
}

Innym częstym błędem w tym obszarze jest to, że kolumna, której używasz w tabeli bazy danych, nie daje wystarczającej ilości znaków, aby pomieścić pełny wynik skrótu

Hash wygenerowany za pomocą PASSWORD_BCRYPT to 60 znaków

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Uwaga, jeśli w furure podane są inne skróty, mogą one skutkować hashem dłuższym niż 60 znaków

Więc w skrócie twój kod powinien być

$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;
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuwanie wszystkich rekordów tabeli, do których nie ma odniesień z innej tabeli

  2. MySQLNonTransientConnectionException:Nie można utworzyć połączenia z serwerem bazy danych

  3. Yii - utwórz tabelę tymczasową i użycie jej w następnym zapytaniu powoduje błąd Ogólny:2014 Nie można wykonać zapytań podczas gdy inne zapytania niebuforowane są aktywne

  4. ColdFusion:Opcje aplikacji na podstawie roli?

  5. MySQL - domyślna wartość dla TIMESTAMP(3)