删除表单验证不必要的错误消息

时间:2010-02-13 22:47:38

标签: codeigniter

使用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'));
}

1 个答案:

答案 0 :(得分:1)

我建议您创建一个回调函数,您可以将其用作可以添加到set_rules()函数的规则,如下所示:

$这 - > form_validation-> set_rules( '密码', '密码', '需要| your_callback_function');

这样,肯定会先调用required规则。当用户键入密码时,将检查下一个规则。在这种情况下,它会通过您的回调验证功能。如果用户未在密码字段中输入任何内容,则错误消息应自动显示需要密码。

如果要在密码字段上阻止SQL注入,请将sha1md5规则添加到密码字段。

查看Form Validation library中的回调:您自己的验证功能

此外,如果您使用Active Record class而非手动输入查询,则您的查询将更安全,因为系统会自动转义值。您还可以选择使用预准备语句来阻止SQL注入。