PHP密码验证器输出

时间:2015-09-18 19:30:10

标签: php

我知道有几个线程涉及这个主题,但我的问题更多是关于输出。我有一个包含10个密码的数组。它们被发送到函数以验证密码。现在,该功能(有点)做我需要它,即捕获不符合标准的密码,但它一次只捕获一件事。我需要该函数来返回密码不符合的EACH标准。例如:“abcd”应返回一个字符串,指出“密码太短,密码不包含数字,密码不包含特殊字符等”。

每次不满足if语句时,如何添加字符串?非常感谢您的帮助!

function validatePassword($pwd) {
     if (strlen($pwd) < '8') {
        $invalidPassword = "Your Password Must Contain At Least 8 Characters!";
    }
    elseif(strlen($pwd) > '16') {
        $invalidPassword = "Your Password is too long!";
    }   
    elseif(!preg_match("#[0-9]+#",$pwd)) {
        $invalidPassword = "Your Password Must Contain At Least 1 Number!";
    }
    elseif(!preg_match("#[A-Z]+#",$pwd)) {
        $invalidPassword = "Your Password Must Contain At Least 1 Capital Letter!";
    }
    elseif(!preg_match("#[a-z]+#",$pwd)) {
        $invalidPassword = "Your Password Must Contain At Least 1 Lowercase Letter!";
    }

    return $invalidPassword;
}

$Passwords = array("donkeypass", "password", "Prebyt1na!", "1234", "abcd", "narW1@asndk", "pasS w0rd!", "maK%sh1ft", "mypasswordisthebestpasswordever!23493484023", "sD123#vAr2@y7");
foreach ($Passwords as $value) {
    echo validatePassword($value);
}

2 个答案:

答案 0 :(得分:3)

为了保留失败列表,我们必须先将所有其他内容转换为if。然后我们将收集数组中的错误。使用[]运算符时,这只是意味着将其添加到当前数组的末尾。

然后我们将返回这些结果。如果大小(count())> 0我们将使用implode将错误数组连接成一个用逗号分隔的字符串并输出结果。

如果没有发现错误,我们将输出一个阳性结果。

listview

答案 1 :(得分:0)

我为你写了一个函数:

function validatePassword($pwd) {
     $messages = array();
     $index = 0;
     if (strlen($pwd) < '8') {
        $messages[$index] = "Your Password Must Contain At Least 8 Characters!";
        $index++;
    }
    if(strlen($pwd) > '16') {
        $messages[$index] = "Your Password is too long!";
        $index++;
    }   
    if(!preg_match("#[0-9]+#",$pwd)) {
        $messages[$index] = "Your Password Must Contain At Least 1 Number!";
        $index++;
    }
    if(!preg_match("#[A-Z]+#",$pwd)) {
        $messages[$index] = "Your Password Must Contain At Least 1 Capital Letter!";
        $index++;
    }
    if(!preg_match("#[a-z]+#",$pwd)) {
        $messages[$index] = "Your Password Must Contain At Least 1 Lowercase Letter!";
        $index++;
    }

    return $messages;
}