php - CodeIgniter 3 MySQL - 验证用户密码不起作用

标签 php mysql codeigniter

以下函数未返回 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/

相关文章:

php - 在事务中插入 mysql 外键和主键。

php - 检查一天字段中两个日期之间的可用性

php - 如何在 Zend-Framework 中创建或执行 MySQL 过程?

php - 如何在 php 代码中编写 jquery 代码

PHP - 具有静态函数的初始化类

php - php mysql中基于 session 的登录表单

php - 在 laravel php 中注册新用户时更新多个用户详细信息

php - Codeigniter form_validation 总是返回 false

javascript - 使用数据库中的值循环选项元素

php - 更改日期的顺序以在上方显示最新的,在下方显示最早的