2012-05-25 3 views
7

Я пытаюсь создать скрипт проверки пароля. У меня уже есть чеки на адрес электронной почты (для не разрешенных символов), как это:Проверка прочности пароля в PHP

public function checkEmail($email) 
    { 
    if (filter_var($email, FILTER_VALIDATE_EMAIL)) 
     return true; 
    else 
     return false; 
    } 

Так что я ищу для функции проверки пароля, который проверяет пароли имеют по крайней мере один алфавитно-цифровой символ, и один цифровой символ, и как минимум 8 символов, а также предоставляет сообщения об ошибках.

+0

Что вы пробовали до сих пор? Какова конкретная проблема, с которой вы работаете? – Treffynnon

+5

'strlen()' - лучшая проверка прочности. Громоздкие пароли [не стоят этого] (http://xkcd.com/936/). – mario

+1

Вы можете уменьшить свою функцию до 'return !! filter_var ($ email, FILTER_VALIDATE_EMAIL);' – Esailija

ответ

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

отредактированная версия этого: http://www.cafewebmaster.com/check-password-strength-safety-php-and-regex

+0

Я думаю, что вы должны иметь [a-zA-Z] последним, правильно? И на самом деле определение Бякугана продлится один буквенно-цифровой, но я думаю, что он имеет 1 альфа, 1 номер, strlen> = 8 (что вы сделали здесь, за исключением того, что A-z). – raPHPid

+0

Если есть ошибка, вы можете вернуть объект JSON, описывая ошибку в коде и сообщении, например: return json_encode (array ("ok" => 1, "msg" => "length <8 chars")); –

+0

@Byakugan - использовать второй параметр, переданный по ссылке, поэтому функция может поместить сообщение там, если это необходимо. Это более надежное, чем использование возвращаемого значения для логического или для строки (сообщение об ошибке). – martinstoeckli

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