$query = $this->db->select('password')->get_where('members', array('email' => $this->input->post('email')));
if ($query->num_rows() == 1) {
if (password_verify($this->input->post('password'), $query->row(1))) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
我使用上面的代码来验证来自数据库的哈希的用户输入密码,并且我使用具有内置password_compat的CodeIgniter来使函数适用于小于5.5的版本。
以上应该可以,但我一直收到这个错误:
严重性:警告消息:strlen()期望参数1为字符串, 给定的对象文件名:compat / password.php行号:220
这可能是什么问题?
谢谢!
答案 0 :(得分:0)
您需要在变量中获取查询结果,这是错误的使用
$query->row(1);
这将是
$rows=$query->row();
$rows->password;
检查以下代码
$query = $this->db->select('password')->get_where('members', array('email' => $this->input->post('email')));
if ($query->num_rows() == 1) {
$rows=$query->row();// here you assign result to $rows variable
在此处查看如何将密码变量作为参数
传递 if (password_verify($this->input->post('password'), $rows->password)) {
return TRUE;
} else {
return FALSE;
}
} else {
return FALSE;
}
答案 1 :(得分:0)
只需将$query->row(1)
更改为$query->row(0)->password