Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам метода password_hash() на php..?

Трябва да проверите необработената нехеширана парола, като password_verify() извършва повторното хеширане на необработената парола с помощта на рутинната хеширане, използвана при създаване на хеширана парола.

Ако погледнете резултата от password_hash() има информация, съхранявана в хеша за това коя хеш рутина е била използвана за създаване на този хеш и как е генериран

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Друга често срещана грешка в тази област е, че колоната, която използвате в таблицата на базата данни, не дава достатъчно знаци, за да задържи пълния резултат от хеша

Хешът, генериран с помощта на PASSWORD_BCRYPT, е 60 знака

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Внимавайте, когато други хешове са предоставени във furure, те могат да доведат до хеш, по-дълъг от 60 знака

Така че накратко вашият код трябва да бъде

$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. проблем с предупреждението:очаква параметър 1 да бъде mysqli_result

  2. MySQL репликацията е двупосочна

  3. как да избегнем застой в mysql

  4. получаване на db:SQLSTATE[HY000] [2002] Грешка отказана връзка на Mac с MAMP

  5. Колко голяма е твърде голяма за MySQL таблица?