登录模型出错

时间:2017-02-15 08:53:45

标签: php codeigniter

我正在尝试创建登录。但是在检查来自数据库的凭证时,如果任何1数据正确而其他数据也不正确则记录 登录名,电子邮件,手机都是允许的 'status'应该是'active'是一个额外的条件 我做错了什么?

function login($username, $password) {
    $where = "status='active' AND name='$username' OR email_id= '$username' OR mobile_no='$username' AND password ='trim($password)'";
    $this->db->select('*');
    $this->db->from('user_details');
    $this->db->where($where);
    //$this->db->where('password', trim($password));
    $this->db->limit(1);

    $query = $this->db->get();
    if ($query->num_rows() == 1) {
        return $query->result();
    } else {
        return false;
    }
}

2 个答案:

答案 0 :(得分:3)

使用group_start()group_end()进行查询分组。不用担心SQL Injection

$this->db->select('*')->from('user_details')
            ->where('status', 'active')
            ->group_start()
                    ->where('email_id',$username )
                    ->or_where('mobile_no',$username)
            ->group_end()
    ->where('password',trim($password))
->limit(1)
->get();

有关详情,请参阅此处Codeigniter Query Builder

答案 1 :(得分:1)

你在where子句中有问题。您需要使用括号来检查OR的列。

请查看以下内容。

 $where = "status='active' AND
      (name='$username' OR email_id= '$username' OR mobile_no='$username')
       AND password ='trim($password)'";