我正在尝试构建用户登录。
除了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');
有什么想法吗?
答案 0 :(得分:1)
$post_password = md5($this->input->post('password', TRUE));
完成这项工作。