电子邮件和密码的 CodeIgniter 验证规则

Posted

技术标签:

【中文标题】电子邮件和密码的 CodeIgniter 验证规则【英文标题】:CodeIgniter Validation Rules for Email and Password 【发布时间】:2015-08-22 19:36:49 【问题描述】:

我习惯于使用 CodeIgniter 对应用程序进行编码,而且我完全是新手。我刚开始学习 CodeIgniter 3.0,并达到了验证规则。

我注意到xss_clean 现在从验证类中消失了,那么在验证电子邮件和密码时应该使用什么规则?仅使用 trimvalid_email 和 required 就足够安全了?

很抱歉,如果有人问过这个问题,但我四处搜索,发现人们使用 xss_clean 的旧主题。

【问题讨论】:

xss_clean 在 Codeigniter 3.0 中已弃用。它不再出现在 form_validation 库中。旧的对于完全防止 XSS 也没有多大用处。您应该有自定义功能来清理用户数据。在 html 上打印时更好地清理用户数据。 【参考方案1】:

包括电子邮件助手:

$this->load->helper('email');

对于电子邮件:

$this->form_validation->set_rules('email', 'Email', 'trim|required|valid_email|xss_clean');

或者您也可以使用 php 过滤器进行电子邮件验证

filter_var($email, FILTER_VALIDATE_EMAIL);

密码表达式

   public function chk_password_expression($str)

    

    if (1 !== preg_match("/^.*(?=.6,)(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z]).*$/", $str))

    
        $this->form_validation->set_message('chk_password_expression', '%s must be at least 6 characters and must contain at least one lower case letter, one upper case letter and one digit');
        return FALSE;
    

    else

    
        return TRUE;
    
 

调用你应该使用的函数:

$this->form_validation->set_rules(  'password', 'Password', 'trim|required|min_length[6]|max_length[15]|callback_chk_password_expression');

注意:chk_password_expression 应该在同一个类控制器或父类中。电子邮件助手应包含为 $this->load->helper('email');

【讨论】:

CodeIgniter 3 中的 xss_clean 不是贬值了吗?另外,密码表达式有什么作用? 除此之外,在电子邮件助手类中,它说“电子邮件助手已弃用,目前仅保留向后兼容。” codeigniter.com/userguide3/helpers/… 在这里查看如何使用它。你也可以使用 filter_var($email, FILTER_VALIDATE_EMAIL);

以上是关于电子邮件和密码的 CodeIgniter 验证规则的主要内容,如果未能解决你的问题,请参考以下文章

Codeigniter 自定义电子邮件验证规则

匹配的 Codeigniter 表单验证规则(密码)

Codeigniter - 忘记密码

在codeigniter中忘记密码

Codeigniter 表单验证无法与自定义回调函数一样工作

为Firebase身份验证帐户实施密码的自定义规则