我在登录用户时遇到问题。我在数据库中使用md5
方法保存了加密密码。现在,当我想选择具有加密密码表单数据库的用户时,它返回null。
这是我的代码:
控制器:
function login(){
$username=$this->input->post('username');
$password=$this->input->post('password');
$user=$this->mymodel->login($username,$password);
if($user)
$this->load->view('home');
else
echo "The user name or password is wrong";
}
模型:
function login($username,$password){
$where=array('username'=>$username,'password'=>md5($password));
$this->db->select()->from('user')->where($where);
$query=$this->db->get();
return $query->first_row('array');
}
但此查询返回null;
答案 0 :(得分:1)
从查看代码我发现你没有在select函数中指定任何行。您可以传入一个星号'*'来表示从数据库表中获取所有行。您的where子句也可以分为两个单独的行。最后,行函数可用于获取查询结果的第一行。
型号代码:
function login($username, $password
{
$this->db->select('*')
->from('user')
->where('username', md5(username))
->where('password', md5($password));
$query = $this->db->get();
return $query->row();
}
我也不鼓励你使用md5来存储密码。 PHP有更强大的加密方法。此外,将盐渍密码存储在数据库中时,最好使用盐渍密码。 有关详细信息,请参阅How do you securely store a user's password and salt in MySQL?
您可以在the codeigniter manual中找到有关如何使用codeigniters活动记录类的更多信息。