以下函数未返回 true,我不明白为什么。我没有收到任何数据库错误,但由于某种原因它肯定会返回 false。表名和字段名 100% 正确。
public function verify_password($username, $password){
$this->db->select('password');
$this->db->from('user_account');
$this->db->where('username', $username);
$query = $this->db->get();
if($query == $password){
return true;
} else {
return false;
}
}
最佳答案
问题是您需要从查询中获得一些结果。了解 Generating Query Results .
修改后的方法如下
public function verify_password($username, $password)
{
//use method chaining, it's more efficient and less typing
$query = $this->db
->select('password')
->from('user_account')
->where('username', $username)
->get();
//were any matching rows found?
if($query->num_rows() > 0)
{
// get first row of data and check 'password' value against passed value
// return is a boolean
return $query->row()->password === $password;
}
//There are no rows that match so clearly not logged in
return false;
}
正如您问题中的评论所指出的,您不应存储纯文本密码。
关于php - CodeIgniter 3 MySQL - 验证用户密码不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49928783/