codeigniter - 使用表单验证删除不必要的错误消息

标签 codeigniter

使用 Codeigniter,我可以创建一个用于用户身份验证的函数。
我有一个函数,我调用它来检查给定的用户名/密码是否有效。
我遇到的问题是,如果没有给出密码,我不希望代码显示“无效登录”。它应该显示“需要密码”或类似的内容。

我想我不能要求密码字段,在这种情况下,空白密码无论如何都会导致登录失败。但是,我想确保不会发生 sql 注入(inject)。

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

最佳答案

我建议您创建一个回调函数,您可以将其用作可以添加到 set_rules() 的规则。像这样的功能:

$this->form_validation->set_rules('password','Password','required|your_callback_function');

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

如果要防止密码字段上的 SQL 注入(inject),请添加 sha1md5规则到密码字段。

查看 回调:您自己的验证函数 Form Validation library .

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

关于codeigniter - 使用表单验证删除不必要的错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2259404/

相关文章:

javascript - 发布或获取 ajax 请求中不存在的数据

php - Codeigniter Controller 中的行数

codeigniter - 如何使用 Codeigniter 数组执行批量更新?

php - Codeigniter 错误日志不包括文件名

php - PHP中使用相同键存储不同数组的值

javascript - Summernote 图像上传在 codeigniter 中不起作用

php - 使用 CodeIgniter 插入时重复

php - PHP MVC原则

php - Codeigniter - 在表/列表中显示数据库记录

php - CodeIgniter 中的 ActiveRecord