RFpro.ru: Программирование на PHP

  Все выпуски  

RusFAQ.ru: Программирование на PHP


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / PHP

Выпуск № 215
от 03.01.2006, 21:42

Администратор:Калашников О.А.
В рассылке:Подписчиков: 208, Экспертов: 35
В номере:Вопросов: 1, Ответов: 3


Вопрос № 32397: Здравствуйте. У меня вопрос по регулярным выражениям. Есть форма изменения пароля. Необходимо проверить чтобы пароль содержал буквы лат. алфавита притом как верхнего регистра так и нижнего, а также обязательно цифры и знаки. Если нет например...

Вопрос № 32.397
Здравствуйте.
У меня вопрос по регулярным выражениям.
Есть форма изменения пароля. Необходимо проверить чтобы пароль содержал буквы лат. алфавита притом как верхнего регистра так и нижнего, а также обязательно цифры и знаки. Если нет например цифр или букв в верхнем регистре нет - вывести ошибку.
Отправлен: 29.12.2005, 20:06
Вопрос задал: Оськин Дмитрий Владимирович (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Дмитрий Иванов
Здравствуйте, Оськин Дмитрий Владимирович!

$pass="4578dfbJHF";
if(!preg_match("/^[a-zA-Z0-9]+$/",$pass)){

print "Пароль содержит некорректные символы";

}
---------
ставя оценку - подумай, может ты не все описал.
Ответ отправил: Дмитрий Иванов (статус: Студент)
Отправлен: 30.12.2005, 12:47

Отвечает: Schmak
Здравствуйте, Оськин Дмитрий Владимирович!
Можно перебирать строку по символам и смотреть, что это за символ.
Пример ($str - новый пароль):
$sl=false; // маленькие буквы
$bl=false; // большие буквы
$n=false; // цифры
$bad=false; // посторонние символы
for ($i=0;$i {
$s=$str[$i];
$d=ord($s);
if ($d>64 && $d<91)
$bl=true; // большая буква
else if ($d>96 && $d<123)
$sl=true; // мелкая буква
else if ($d>47 && $d<58)
$n=true; // цифры
else $bad=true;
}
Теперь, если $bad=true, то есть какие-то левые символы (не цифры и не латинские буквы), если $bl, $sl и $n равны true и
$bad=false - пароль нормальный, а если какая-то из переменных $bl, $sl или $n равна false, то чего-то не хватает.
---------
Не всё то Windows, что висит!
Ответ отправил: Schmak (статус: Студент)
Отправлен: 30.12.2005, 13:41

Отвечает: Samum
Здравствуйте, Оськин Дмитрий Владимирович!
Если я правильно понял, то пароль должен обязательно состоять из символов английского алфавита разного регистра и цифр и всяческих спец.знаков. Сделать такую проверку можно проверяя наличие символов из каждой группы, например, так:

if (
preg_match("/^[a-zA-Z0-9~!@#$%^&*()_]+$/",$p) && // Состоит только из латинских букв и цифр
preg_match("/[a-z]/",$p) && // Точно содержит маленькие лат. буквы
preg_match("/[A-Z]/",$p) && // Точно содержит большие лат. буквы
preg_match("/[0-9]/",$p) && // Точно содержит цифры
preg_match("/[~!@#$%^&*()_]/",$p) // Точно содержит спец.символы
){
echo "Точно подходит.";
}
else{
echo "Чего-то не хватает!";
}

Переменная $p - это переданный пароль.
---------
Если бы программистам за их ошибки отрывали части тела, то в конце концов им пришлось бы использовать голову!
Ответ отправил: Samum (статус: Специалист)
Отправлен: 30.12.2005, 16:03


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.phpplus
Архив рассылки
Отписаться Вебом Почтой
Вспомнить пароль

В избранное