PHP中的密码强度检查
我正在尝试创建密码检查脚本。我已经检查过电子邮件(不允许使用的字符),如下所示:PHP中的密码强度检查,php,validation,passwords,Php,Validation,Passwords,我正在尝试创建密码检查脚本。我已经检查过电子邮件(不允许使用的字符),如下所示: public function checkEmail($email) { if (filter_var($email, FILTER_VALIDATE_EMAIL)) return true; else return false; } 因此,我正在寻找一个密码验证函数,它可以检查密码是否至少有一个字母数字字符、一个数字字符和至少8个字符,并提供错误消息。公
public function checkEmail($email)
{
if (filter_var($email, FILTER_VALIDATE_EMAIL))
return true;
else
return false;
}
因此,我正在寻找一个密码验证函数,它可以检查密码是否至少有一个字母数字字符、一个数字字符和至少8个字符,并提供错误消息。公共函数checkPassword($pwd,&$errors){
public function checkPassword($pwd, &$errors) {
$errors_init = $errors;
if (strlen($pwd) < 8) {
$errors[] = "Password too short!";
}
if (!preg_match("#[0-9]+#", $pwd)) {
$errors[] = "Password must include at least one number!";
}
if (!preg_match("#[a-zA-Z]+#", $pwd)) {
$errors[] = "Password must include at least one letter!";
}
return ($errors == $errors_init);
}
$errors\u init=$errors;
如果(strlen($pwd)<8){
$errors[]=“密码太短!”;
}
如果(!preg_match(#[0-9]+#“,$pwd)){
$errors[]=“密码必须至少包含一个数字!”;
}
如果(!preg_match(#[a-zA-Z]+#“,$pwd)){
$errors[]=“密码必须至少包含一个字母!”;
}
返回($errors==$errors\u init);
}
编辑后的版本:到目前为止您尝试了什么?您遇到的具体问题是什么?
strlen()
是最好的强度检查。繁琐的密码。您可以将函数缩减为return!!过滤变量($email,filter\u VALIDATE\u email)代码>@Treffynnon到目前为止没有什么有用的。。。strlen()将替换字符,而不是检查字符?不,strlen()只是检查字符串的长度我认为最后应该有[a-zA-Z],对吗?实际上,Byakugan的定义是持续一个字母数字,但我认为他包含1个字母,1个数字,strlen>=8(你在这里做了,除了A-z)。如果有错误,你可以返回一个JSON对象,在代码和消息中描述错误,比如:返回JSON_encode(数组(“ok”=>1,“msg”=>"length@Byakugan-使用通过引用传递的第二个参数,这样函数可以在必要时将消息放在那里。这比使用布尔值或字符串的返回值(错误消息)更健壮.按照martinstoeckli的建议修复了a-zA-Z并添加了错误消息。@Jeroen-因为您不知道传递给函数时,$errors
包含什么,所以您应该用null初始化它。否则就可以了。