Выполнение требований пароля - PullRequest
13 голосов
/ 31 мая 2011

Я хочу проверить, успешно ли пользователь выполнил следующие требования:

  • Пароль должен содержать не менее 8 символов
  • Состоит из одной заглавной и одной строчной буквы

Как бы я это сделал?

Я использую скрипт PHP ниже:

if ( strlen( $password ) < 8 ) {
     false
} else {
   if ( preg_match( "/[^0,9]/", $password ) ) {
     // how to check the upper case and lower case
   }
}

Ответы [ 7 ]

9 голосов
/ 31 мая 2011

Вы можете сделать это с помощью регулярного выражения:

if (!preg_match('/^(?=[a-z])(?=[A-Z])[a-zA-Z]{8,}$/', $password))
{
    //error
}
3 голосов
/ 31 мая 2011

Используйте preg_match("/[A-Z]/") и preg_match("/[a-z]/")

2 голосов
/ 31 мая 2011

Вы можете использовать метод ранжирования паролей:

<code>$x = "a12ASD!@#$";
$rank = Array();


$rank['length'] = strlen($x);

$matches = Array();
preg_match_all("/([a-z]+)/", $x, $matches);
$rank['lowercase'] = strlen(implode('', $matches[0]))/count($matches[0]);

$matches = Array();
preg_match_all("/([A-Z]+)/", $x, $matches);
$rank['uppercase'] = strlen(implode('', $matches[0]))/count($matches[0]);

$matches = Array();
preg_match_all("/([0-9]+)/", $x, $matches);
$rank['numbers'] = strlen(implode('', $matches[0]))/count($matches[0]);

$matches = Array();
preg_match_all("/([^a-zA-Z0-9]+)/", $x, $matches);
$rank['symbols'] = strlen(implode('', $matches[0]))/count($matches[0]);


echo "<pre>";
var_dump($rank);
echo "
";
2 голосов
/ 31 мая 2011
if( strlen($password) < 8 ) {
     return false;
}
if(preg_match("/[^0,9]/", $password)) {
     how to check the upper case and lower case
}
if($password == strtoupper($password) || $password == strtolower($password)){
//pass fails because its either all upcase, or lowercase
}
1 голос
/ 31 мая 2011

Вы можете использовать trim , что на самом деле намного быстрее, чем регулярное выражение

if ( trim( $password, 'a..z') != '' && trim( $password, 'A..Z') != '' && strlen($password) >= 8 )
{
  /* Password validation passes, do stuff. */
}
else {
  /* Password validation fails, show error. */
}
1 голос
/ 31 мая 2011
if (
  strlen($password) >= 8) &&
  preg_match('/[A-Z]/', $password) > 0 &&
  preg_match('/[a-z]/', $password) > 0 )
{
  /* Password validation passes, do stuff. */
}
else {
  /* Password validation fails, show error. */
}
0 голосов
/ 31 мая 2011
preg_match('/[a-z]/', $password) && preg_match('/[A-A]/', $password)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...