使用Codeigniter,我可以创建用于用户身份验证的功能。 我有一个函数,我打电话来检查给出的用户名/密码是否有效。 我遇到的问题是,如果没有给出密码,我不希望代码显示“无效登录”。它应该是“需要密码”或类似的东西。
我想我不能要求密码字段,在这种情况下,空密码会导致登录失败。但是,我想确保不会发生sql注入。
$this->form_validation->set_rules('username','username','required|callback_authenticate');
$this->form_validation->set_rules('password','password','required');
$this->form_validation->set_message('authenticate','Invalid login. Please try again.');
验证功能
function authenticate() {
return Current_User::checkLogin($this->input->post('username'),
$this->input->post('password'));
}
答案 0 :(得分:1)
我建议您创建一个回调函数,您可以将其用作可以添加到set_rules()
函数的规则,如下所示:
$这 - > form_validation-> set_rules( '密码', '密码', '需要| your_callback_function');
这样,肯定会先调用required
规则。当用户键入密码时,将检查下一个规则。在这种情况下,它会通过您的回调验证功能。如果用户未在密码字段中输入任何内容,则错误消息应自动显示需要密码。
如果要在密码字段上阻止SQL注入,请将sha1
或md5
规则添加到密码字段。
查看Form Validation library中的回调:您自己的验证功能。
此外,如果您使用Active Record class而非手动输入查询,则您的查询将更安全,因为系统会自动转义值。您还可以选择使用预准备语句来阻止SQL注入。