在Codeigniter中查询md5密码以进行用户登录

时间:2012-01-24 12:14:04

标签: codeigniter

我正在尝试构建用户登录。

除了md5密码之外,它们都运行良好。

基本上我有一个表单可以进行验证(对于有效的电子邮件和必填字段),然后我制作了一个自定义回调验证规则,将表单中输入的用户详细信息与数据库中的用户详细信息进行比较。如果未找到任何详细信息,则规则返回FALSE,如果找到,则用户将登录。

以下是我的控制器中检查规则的功能:

public function user_pass_check()
    {
        $db_users = $this->load->database('users', TRUE);
        $post_email = $this->input->post('email', TRUE);
        $post_password = $this->input->post('password', TRUE);

        $query = $db_users->query("SELECT id, email, password FROM useraccounts WHERE `email`='$post_email' AND `password`=md5('$post_password')");
        $result = $query->num_rows(); 

        if ($result == 0)
        {
            $this->form_validation->set_message('user_pass_check', 'Login failed! Please check your login details.');
            return FALSE;
        }
        else 
        {
            // Session cookie creation goes here //
            return TRUE;
        }
    }

我尝试登录时遇到错误。如果数据库中的密码不是md5并且我在查询中的$ post_password周围删除了md5(),它就能正常工作。 Natrually我希望密码是md5,我不能在我的数据库中公开密码。

此处还有表单验证的规则:

$this->form_validation->set_rules('email', 'email address', 'trim|required|valid_email|callback_user_pass_check');
$this->form_validation->set_rules('password', 'password', 'trim|required|md5|callback_user_pass_check');

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

$post_password = md5($this->input->post('password', TRUE));

完成这项工作。