Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数字和字母序列的PHP验证检查_Php - Fatal编程技术网

数字和字母序列的PHP验证检查

数字和字母序列的PHP验证检查,php,Php,我们创建密码的规则之一是,它不应该包含数字或字母序列 例如12345,pwd45678,pwd_abcdef,pwd_abc123 所有这些都是不允许的 有没有关于如何检查序列的建议? 顺序意味着它不应该像数字1-10或字母表中的字母那样顺序。因此,密码不应包含字母顺序或顺序以及1-10顺序的数字。因此,不允许使用包含ABC、DEF或HIJK的密码,也不允许使用包含数字顺序(如1234或4567)的密码,但可以使用包含ABNOE或19334的密码 TIA无2个相邻数字或字母的特定规则: 如果pr

我们创建密码的规则之一是,它不应该包含数字或字母序列

例如12345,pwd45678,pwd_abcdef,pwd_abc123

所有这些都是不允许的

有没有关于如何检查序列的建议? 顺序意味着它不应该像数字1-10或字母表中的字母那样顺序。因此,密码不应包含字母顺序或顺序以及1-10顺序的数字。因此,不允许使用包含ABC、DEF或HIJK的密码,也不允许使用包含数字顺序(如1234或4567)的密码,但可以使用包含ABNOE或19334的密码


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;
    }