数字和字母序列的PHP验证检查
我们创建密码的规则之一是,它不应该包含数字或字母序列 例如12345,pwd45678,pwd_abcdef,pwd_abc123 所有这些都是不允许的 有没有关于如何检查序列的建议? 顺序意味着它不应该像数字1-10或字母表中的字母那样顺序。因此,密码不应包含字母顺序或顺序以及1-10顺序的数字。因此,不允许使用包含ABC、DEF或HIJK的密码,也不允许使用包含数字顺序(如1234或4567)的密码,但可以使用包含ABNOE或19334的密码数字和字母序列的PHP验证检查,php,Php,我们创建密码的规则之一是,它不应该包含数字或字母序列 例如12345,pwd45678,pwd_abcdef,pwd_abc123 所有这些都是不允许的 有没有关于如何检查序列的建议? 顺序意味着它不应该像数字1-10或字母表中的字母那样顺序。因此,密码不应包含字母顺序或顺序以及1-10顺序的数字。因此,不允许使用包含ABC、DEF或HIJK的密码,也不允许使用包含数字顺序(如1234或4567)的密码,但可以使用包含ABNOE或19334的密码 TIA无2个相邻数字或字母的特定规则: 如果pr
TIA无2个相邻数字或字母的特定规则: 如果preg_匹配\d{2,}{[:alpha:]{2,}u,$input{ 返回false; } 你可以试试看
但是,有专门用于密码强度检查的。它们将具有可配置的规则或测试。您可以使用下面的代码,我使用了asci代码来解决问题,它已经针对您的示例进行了测试:
为什么要限制人们的密码?这只会导致使用更糟糕的密码。你的意思是只允许数字,然后字母,然后数字,然后字母。。。只有像这样的密码1A2B3D5F?是的,类似的。这只是他们给出的条件之一,密码还应该包含至少1个大写字母和一个特殊字符,但我已经使用preg_match捕获了它,只缺少数字或字母序列。另外,要补充的是,序列应该不小于3。如果这只是其中一条规则,我不确定我是否想知道其他规则。强迫我在数字和字符之间切换将是不为我使用您的服务的一个原因。据您所说,这是一个弱密码:1ZzOSVabc/5gjIp66UGPs-因为它包含abcHi,我想我不清楚顺序,我也更新了我的问题,按数字和字母顺序表示不允许使用包含ABC、DEF、GHI、123、234、345或789的密码。序列也指1-10之间的数字顺序或字母表中的字母顺序,如abcdefgh。。。。
<?php
$passwords = [
'12345',
'pwd45678',
'pwd_abcdef',
'pwd_abc123',
];
var_dump(check_password_sequence($passwords[3], 4));
function check_password_sequence($password, $max) {
$j = 0;
$lenght = strlen($password);
for($i = 0; $i < $lenght; $i++) {
if(isset($password[$i+1]) && ord($password[$i]) + 1 === ord($password[$i+1])) {
$j++;
} else {
$j = 0;
}
if($j === $max) {
return true;
}
}
return false;
}