2015-05-01 4 views
1

Следующий код проверяет новый пароль пользователя, с просьбой подтвердить свой пароль, введя его дважды:Password Validation - Наследие Код

// search to see if is a vvalid file path 
       if (($val["type"] == "password") && !strstr($key , "_confirm")) { 
        $name = $val["name"] ? $val["name"] : $key ; 

        if ($input[$name] != $input[$name . "_confirm"]) { 
         //preparing the message 
         $fields["error"] = "Password and confirmation doesn't match."; 
         $fields["errors"][$name] = 1; 
         $fields["errors"][$name . "_confirm"] = 1; 
         $fields["values"] = $input; 
        } 

       } 

Я хотел бы включить дополнительную проверку (т.е. пароль содержит, по меньшей мере, 1 номер и 1 письмо, специальные символы [! @ # $%], должно быть не менее 8 символов в длину.

что бы правильный код синтаксис для гнезда с вышеприведенным кодом? THX

+0

Вы хотите, чтобы логическая проверка (хорошая/плохая) или подтверждение, которое оценивает силу пароля? – copeg

+0

Простое подтверждение (то есть длиной не менее 8 символов, содержит не менее 1 номера и специальные символы). –

ответ

2

Чтобы добавить валидация, вам нужно найти Regex вам нравится, например

http://regexlib.com/Search.aspx?k=password&AspxAutoDetectCookieSupport=1

Затем используйте эту регулярное выражение в коде (заменить $regEx ваш выбор):

if (($val["type"] == "password") && !strstr($key , "_confirm")) { 
    $name = $val["name"] ? $val["name"] : $key ; 

    if ($input[$name] != $input[$name . "_confirm"]) { 
     //preparing the message 
     $fields["error"] = "Password and confirmation doesn't match."; 
     $fields["errors"][$name] = 1; 
     $fields["errors"][$name . "_confirm"] = 1; 
     $fields["values"] = $input; 
    } 
    if(!preg_match($regEx, $input[$name])) { 
     $fields["error"] = "Password must contain..."; 
     $fields["errors"][$name] = 1; 
     $fields["values"] = $input; 
    } 
} 

Для один-верхний, один низший, и один-значный ж/мин 8 символов:

$regEx = '/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/'; 

Добавить в некоторых специальных требованиях символьных:

$regEx = '/^(?=.*[[email protected]#$%])(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,}$/'; 
+0

Молодец, Кевин. Работает как шарм. Огромное спасибо! –

Смежные вопросы