gpt4 book ai didi

codeigniter 事件记录 where,or_where?

转载 作者:行者123 更新时间:2023-12-04 03:15:40 25 4
gpt4 key购买 nike

我在 CodeIgniter 上使用 Active Record。我对我应该采取哪种方法感到困惑。目前,我们的登录系统让用户使用用户名/电子邮件以及密码登录。但是我目前的事件记录,如果用户选择使用电子邮件+无密码,似乎可以让他登录。

现在这是我的查询:

$this->db->select('id,level,email,username');
$this->db->where('email',$user);
$this->db->or_where('username',$user);
$this->db->where('password',$pass);
$query = $this->db->get('users');

if($query->num_rows>0)
return TRUE;
else
return FALSE;

示例输入:
  • 用户名:测试 |密码: |结果:成功
  • 用户名:测试 |密码:空 |结果:失败
  • 用户名: test@domain.com |密码: |结果:成功
  • 用户名: test@domain.com |密码:空 |结果:成功

  • 第四个测试输入必须是 失败 结果,但即使密码为空,它似乎也会记录用户。

    最佳答案

    问题可能是在 WHERE 子句中混合 AND 和 OR 时需要添加括号。尝试这个:

    $this->db->select('id,level,email,username');
    $this->db->where("(email = '$user' OR username = '$user')
    AND password = '$pass'");
    $query = $this->db->get('users');

    关于codeigniter 事件记录 where,or_where?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870583/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com