这是我第一次在我的应用程序中使用PHP本机密码功能。我使用以下代码存储了用户的密码:
password_hash($this->input->post('password'),PASSWORD_BCRYPT);
结果存储在数据库中。现在我想在登录过程中验证用户。
我的问题在这里。我有两个选择:
方法1
$sql = "SELECT id,password FROM tbl_members WHERE email = ? LIMIT 1";
$result = $this->db->query($sql,array('user@site.com'));
if ($result->num_rows()) {
$row = $result->row();
$hash = $row->password;
if (password_verify($this->input->post('password'), $hash)) echo 'Successful login';
}
方法2
$hash = password_hash($this->input->post('password'),PASSWORD_BCRYPT);
$sql = "SELECT id FROM tbl_members WHERE email = ? AND password = ? LIMIT 1";
$result = $this->db->query($sql,array('user@site.com',$user_hashed_password));
if ($result->num_rows()) echo 'Successful Login';
哪种方法更适合登录过程?
答案 0 :(得分:-1)
第一种方法是最好的,并且应该使用它。加密,盐等存储在哈希字符串中,因此如果更改加密,旧的存储哈希值仍然有效,而且更多,您不需要存储salt和算法,只需存储哈希。