【问题标题】:Codeigniter Form Validation Setting Strong Password Validation Rule In an ArrayCodeigniter 表单验证在数组中设置强密码验证规则
【发布时间】:2015-09-10 12:51:31
【问题描述】:

我在创建新用户时使用 codeigniter 表单验证来验证用户数据。我想添加某种密码标准,例如密码必须有 至少一个大写字母、一个数字和一个!、@、#、$ 等),并且必须有 6-25 个字符。

这是我用于验证规则的数组:

$config = array(
           array(
                 'field'   => 'title',
                 'label'   => 'Title',
                 'rules'   => 'trim|required'
              ),
            array(
                 'field'   => 'firstname',
                 'label'   => 'First Name',
                 'rules'   => 'trim|required|min_length[2]|max_length[100]|xss_clean'
              ),
           array(
                 'field'   => 'lastname',
                 'label'   => 'Last Name',
                 'rules'   => 'trim|required|min_length[2]|max_length[100]|xss_clean'
              ),
           array(
                 'field'   => 'phone',
                 'label'   => 'Telephone',
                 'rules'   => 'trim|required|intiger|min_length[11]|max_length[11]|xss_clean'
              ),
           array(
                 'field'   => 'email',
                 'label'   => 'Email',
                 'rules'   => 'trim|required|valid_email|is_unique[ci_user.email]|matches[conf_email]|xss_clean'
              ),
           array(
                 'field'   => 'conf_email',
                 'label'   => 'Confirm Email',
                 'rules'   => 'trim|required|valid_email|xss_clean'
              ),
           array(
                 'field'   => 'password',
                 'label'   => 'Password',
                 'rules'   => 'trim|required|min_length[6]|max_length[25]|matches[conf_password]|xss_clean'
              ),
           array(
                 'field'   => 'conf_password',
                 'label'   => 'Confirm Password',
                 'rules'   => 'trim|required|xss_clean'
              ));

有人可以指导我如何实现我所需要的。谢谢

【问题讨论】:

  • 执行回调。看看这个:stackoverflow.com/questions/10525944/…
  • 检查这个linklink1]
  • 嗨,我使用了链接并在我的密码规则中添加了 ''trim|required|min_length[6]|max_length[25]|matches[conf_password]|callback_password_check|xss_clean'' 并创建了 password_check方法,但它不起作用

标签: php codeigniter validation


【解决方案1】:

您可以设置回调函数来检查密码强验证。并在这行代码中调用此函数callback_is_password_strong

array(
    'field'   => 'password',
    'label'   => 'Password',
    'rules'   => 'trim|required|min_length[6]|max_length[25]|matches[conf_password]|xss_clean|callback_is_password_strong'
),

如果你看这个函数将返回真或假,密码数组规则键只有在它返回真时才被验证

public function is_password_strong($password)
{
   if (preg_match('#[0-9]#', $password) && preg_match('#[a-zA-Z]#', $password)) {
     return TRUE;
   }
   return FALSE;
}

【讨论】:

  • 嗨,我已经尝试过了,但由于某种原因,它什么也没做。所以就像回调中的代码被忽略或者回调函数根本没有被调用。
  • 我已将此添加到我的控制器中,但尚未创建扩展 Codeigniter 表单验证的新库。我需要这样做吗?
【解决方案2】:

使用callback函数

public function check_strong_password($str)
    {
       if (preg_match('#[0-9]#', $str) && preg_match('#[a-zA-Z]#', $str)) {
         return TRUE;
       }
       $this->form_validation->set_message('check_strong_password', 'The password field must be contains at least one letter and one digit.');
       return FALSE;
    }

用法

$this->form_validation->set_rules('adminPassword', 'password', 'required|min_length[8]|max_length[25]|callback_check_strong_password');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-30
    • 1970-01-01
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多