Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách sử dụng phương thức password_hash () của php ..?

Bạn phải kiểm tra mật khẩu chưa băm thô, là password_verify() băm lại mật khẩu thô bằng cách sử dụng quy trình băm được sử dụng khi tạo mật khẩu đã băm.

Nếu bạn nhìn vào kết quả của password_hash() có thông tin được lưu trữ trong hàm băm về quy trình băm nào đã được sử dụng để tạo hàm băm này và cách nó được tạo ra

$password = 'FredsTheMan';

$hash = password_hash($password, PASSWORD_BCRYPT);

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

Một lỗi phổ biến khác trong lĩnh vực này là không cung cấp cho cột bạn sử dụng trên bảng cơ sở dữ liệu đủ ký tự để chứa toàn bộ kết quả của hàm băm

Hàm băm được tạo bằng PASSWORD_BCRYPT có 60 ký tự

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Hãy lưu ý, khi các hàm băm khác được cung cấp trong nội dung, chúng có thể dẫn đến một hàm băm dài hơn 60 ký tự

Vì vậy, trong ngắn hạn, mã của bạn phải là

$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. Làm thế nào để sử dụng các câu lệnh chuẩn bị sẵn mysqli?

  2. Một chuỗi thủ tục MySQL có an toàn không?

  3. truy vấn không phân biệt chữ hoa chữ thường trong mysql

  4. Lỗi tương thích của nhà cung cấp cơ sở dữ liệu khung thực thể

  5. Làm cách nào để thêm dấu ngày và giờ vào INSERT qua PHP với mySQL?