用PHP实现强密码

Tri*_*tan 5 php passwords codeigniter

我试图检查,如果用户创建了包含符号(包括+, - ,=符号)OR/AND号的密码.我怎样才能做到这一点?

function check_password($str)
{

   if (!preg_match ("/[&@<>%\*\,\^!#$%().]/i", $str))

    {
        $this->form_validation->set_message('check_password', 'Your password should contain a number,letter,and special characters"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }

} 
Run Code Online (Sandbox Code Playgroud)

谢谢.

Jef*_*ert 7

我对密码强度检查的建议是将每个要求分解为单独的正则表达式,特别是:

   $regexs = array(
                 '/[0-9]+/',  // Numbers
                 '/[a-z]+/',  // Lower Case Letters
                 '/[A-Z]+/',  // Upper Case Letters
                 '/[+-=]+/',  // Your list of allowable symbols.
   );
Run Code Online (Sandbox Code Playgroud)

将计数器初始化为0.对于每个正则表达式,请测试它是否匹配.如果是,则将计数器增加1.如果计数器大于3,则返回true(如果希望密码具有非常强的密码,则返回4),否则返回false.

如果您的要求发生变化,我认为从长远来看,这对您来说会更加可维护.


Jos*_*ber 2

您不必列出所有这些字符。任何不是数字或字母的东西都是特殊字符(或空格):

(?:[^0-9A-z]|[0-9])
Run Code Online (Sandbox Code Playgroud)