0
$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

这里可能是什么问题?

谢谢!

4

2 回答 2

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

读取 生成查询结果

于 2015-06-08T13:26:54.440 回答
0

只需更改$query->row(1)$query->row(0)->password

于 2015-06-08T13:40:16.343 回答