我正在尝试验证我的登录表单,并且我的用户名和密码字段有规则.
$this->form_validation->set_rules('username', 'Username', 'trim|required|xss_clean');
$this->form_validation->set_rules('password', 'Password', 'trim|required|xss_clean|callback_check_database');
所以我的callback_check_database函数在Password字段中.
$this->form_validation->set_message('check_database', 'Invalid username or password');
return false;
在我看来,我想单独显示check_database错误.我不想显示任何其他错误.
这是我尝试过的:
// does not work
<?PHP echo form_error('check_database'); ?>
// this works
<?PHP echo form_error('password'); ?>
因为它是用于密码字段,它只会在我回显密码错误时显示.但这意味着,由于密码是必填字段,如果我没有在其中键入任何内容,则会显示错误,指出密码字段是必需的.
解决方法:
您可以通过两种不同的方式解决此问题.两者都有优点和缺点.
选项1:
$this->form_validation->set_rules('password', 'Password', 'callback_check_database');
然后在callback_check_database中包含一个检查以确保$value!=“”(复制“required”字段).
注意:你不应该在密码字段上使用xss_clean(因为它会改变密码 – 谷歌它,你会看到例子),并且假设你正在哈希密码没有获得任何好处.
选项2:
在视图文件中,只需键入即可
<?PHP if (form_error('password'))
{
echo "Invalid username or password";
}
?>
这意味着您实际上并没有回显错误,您只是检查密码字段是否存在错误,无论它是什么,您只显示上面的文本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。