Применение надежного пароля с помощью PHP - PullRequest
5 голосов
/ 26 августа 2011

Я пытаюсь проверить, создал ли пользователь пароль, содержащий символы (включая знаки +, -, =) ИЛИ / И. Как я могу это сделать?

function check_password($str)
{

   if (!preg_match ("/[&@<>%\*\,\^!#$%().]/i", $str))

    {
        $this->form_validation->set_message('check_password', 'Your password should contain a number,letter,and special characters"');
        return FALSE;
    }
    else
    {
        return TRUE;
    }

} 

Спасибо.

Ответы [ 3 ]

7 голосов
/ 26 августа 2011

Мое предложение для проверки надежности пароля состоит в том, чтобы разбить каждое ваше требование на отдельные регулярные выражения, в частности:

   $regexs = array(
                 '/[0-9]+/',  // Numbers
                 '/[a-z]+/',  // Lower Case Letters
                 '/[A-Z]+/',  // Upper Case Letters
                 '/[+-=]+/',  // Your list of allowable symbols.
   );

Инициализировать счетчик равным 0. Для каждого регулярного выражения проверьте, соответствует ли оно.Если это так, увеличьте счетчик на 1. Затем верните true, если счетчик больше 3 (или 4, если вы хотите, чтобы у них был действительно надежный пароль), в противном случае верните false.

Я думаю, что это будетГораздо более приемлемо для вас в долгосрочной перспективе, если ваши требования когда-либо изменятся.

2 голосов
/ 26 августа 2011

Вам не обязательно перечислять все эти символы. Все, что не является цифрой или буквой, является специальным символом (или пробелом):

(?:[^0-9A-z]|[0-9])
0 голосов
/ 26 августа 2011

Рекомендую смотреть в другом направлении.Если вы хотите наложить ограничение, просто потребуйте, чтобы оно было длиннее.Как уже указывалось, использование символов, скорее всего, заставит пользователя забыть пароль и больше не возвращаться на ваш сайт.Для максимальной безопасности разместите следующий комикс на странице регистрации: http://xkcd.com/936/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...