在codeigniter中从数据库中选择加密密码

时间:2014-03-05 05:45:20

标签: codeigniter encryption md5

我在登录用户时遇到问题。我在数据库中使用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;

1 个答案:

答案 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活动记录类的更多信息。