我试图检查,如果用户创建了包含符号(包括+, - ,=符号)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;
}
}
感谢。
答案 0 :(得分:7)
我对密码强度检查的建议是将每个要求分解为单独的正则表达式,特别是:
$regexs = array(
'/[0-9]+/', // Numbers
'/[a-z]+/', // Lower Case Letters
'/[A-Z]+/', // Upper Case Letters
'/[+-=]+/', // Your list of allowable symbols.
);
将计数器初始化为0.对于每个正则表达式,请测试它是否匹配。如果是,则将计数器增加1.如果计数器大于3,则返回true(如果希望密码具有非常强的密码,则返回4),否则返回false。
如果您的要求发生变化,我认为从长远来看这对您来说会更加可维护。
答案 1 :(得分:2)
您不必列出所有这些字符。任何不是数字或字母的东西都是特殊字符(或空格):
(?:[^0-9A-z]|[0-9])
答案 2 :(得分:0)
我建议寻找不同的方向。如果要施加限制,只需要更长时间。正如已经指出的那样,使用符号很可能会导致用户忘记密码而永远不会回到您的网站。为了最大限度地提高安全性,请在注册页面上发布以下漫画:http://xkcd.com/936/