Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.10.2011, 19:13   #1
Swatch
Форумчанин
 
Регистрация: 05.07.2009
Сообщений: 209
По умолчанию Проверка пароля

Здравствуйте! я только начала изучать php, дали задание создать страницу - форму с полями ввода данных типа регистрации пользователя: имя пользователя, логин, пароль. Вопрос: как при вводе данных в поле с паролем проверить, чтобы его длина была не меньше 8 символов и чтобы оно содержало и буквы и цифры? Нужно сделать это, используя регулярные выражения. Подскажите пожалуйста!
Swatch вне форума Ответить с цитированием
Старый 22.10.2011, 02:44   #2
S-HaCK XORitY
Пользователь
 
Аватар для S-HaCK XORitY
 
Регистрация: 19.07.2011
Сообщений: 70
По умолчанию

Можно так:

PHP код:
<?php
$login 
$_POST['login'];
$pass $_POST['pass'];

if(
ereg('^([0-9a-z]{8,})$'$pass))
{
    echo 
'SignIN ' $login;
}
else
{
    echo 
'Access denied for ' $login;
}
?>
Made All in China - MAC OS...
S-HaCK XORitY вне форума Ответить с цитированием
Старый 22.10.2011, 02:58   #3
S-HaCK XORitY
Пользователь
 
Аватар для S-HaCK XORitY
 
Регистрация: 19.07.2011
Сообщений: 70
По умолчанию

А можно и так:

PHP код:
<?php
$login 
$_POST['login'];
$pass $_POST['pass'];

$pass_len strlen($pass);
$auth_approve true;

if(
$pass_len 8) die('Password is too easy!');

for(
$i=0$i $pass_len$i++)
{
    if(!
ereg('^[0-9a-z]'$pass[$i]))
    {
        
$auth_approve false;
        break;
    }
}

if(
$auth_approve) echo "SignIn " $login;
else echo 
"Incorrect entry, check the input!";
?>
Так даже более стабильно получается.
Made All in China - MAC OS...
S-HaCK XORitY вне форума Ответить с цитированием
Старый 22.10.2011, 15:47   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от S-HaCK XORitY Посмотреть сообщение
Так даже более стабильно получается.
Ага - особенно учитывая, что ereg является DEPRECATED в версиях 5.3+ ...
Andkorol вне форума Ответить с цитированием
Старый 22.10.2011, 16:28   #5
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Ваше выражение к тому же пропустит например 8 букв без цифр и наоборот, что не соответствует заданию
Cronos20 вне форума Ответить с цитированием
Старый 27.10.2011, 17:27   #6
S-HaCK XORitY
Пользователь
 
Аватар для S-HaCK XORitY
 
Регистрация: 19.07.2011
Сообщений: 70
По умолчанию

Цитата:
Сообщение от Cronos20 Посмотреть сообщение
Ваше выражение к тому же пропустит например 8 букв без цифр и наоборот, что не соответствует заданию
ОК, тогда предложите свой вариант)) можно конечно и так попробовать "^[0-9]+[a-z]", но в таком случае в начале обязательно нужно ставить цифру, иначе false. Можно и так:

PHP код:
<?php
$login 
$_POST['login'];
$pass $_POST['pass'];

$pass_len strlen($pass);
$auth_approve true;

if(
$pass_len 8) die('Password is too easy!');

if(!
ereg('^[0-9]+[a-z]'$pass) && !ereg('^[a-z]+[0-9]'$pass))
{
    
$auth_approve false;
}

if(
$auth_approve) echo "SignIn " $login;
else echo 
"Incorrect entry, check the input!";
?>
тогда все точно по заданию)
Made All in China - MAC OS...
S-HaCK XORitY вне форума Ответить с цитированием
Старый 27.10.2011, 18:37   #7
aferistz
Пользователь
 
Регистрация: 13.12.2009
Сообщений: 26
По умолчанию

я бы сделал такое условие:
Код:
if(preg_match('|[0-9]+|isUS', $pass) and preg_match('|[A-Za-z]+|isUS', $pass) and strlen($pass)>=8)
{
//Удачная регистрация
}
else
{
//Пароль не соотвествует
}
aferistz вне форума Ответить с цитированием
Старый 27.10.2011, 19:34   #8
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Цитата:
Сообщение от S-HaCK XORitY Посмотреть сообщение
ОК, тогда предложите свой вариант))
Я не предложил свой вариант, потому что задание на самом деле сложное, которое с наскоку не напишешь. Если ТС действительно требуется реализовать это в одном выражении, то в регулярке придется создавать условия, что нужно будет хорошо протестировать, поэтому мне лично тратить время на такую "банальную" как вы думаете задачу не хочется, к тому же автор явно не проявляет активность. А вообще такие или похожие регулярные выражения можно нагуглить и хорошенько проверить.
Поэтому, господа, не все так просто и очевидно.
Cronos20 вне форума Ответить с цитированием
Старый 28.10.2011, 03:40   #9
S-HaCK XORitY
Пользователь
 
Аватар для S-HaCK XORitY
 
Регистрация: 19.07.2011
Сообщений: 70
По умолчанию

aferistz
Цитата:
я бы сделал такое условие:
В моем примере можно явно отловить, момент при нехватке кол-ва символов и выдать соответствующее сообщение (с юзером надо общаться), а по поводу регулярок, не спорю, сам в основном preg'ом пользуюсь, просто все забыли про ereg, вот я и решил напомнить)))

Цитата:
Сообщение от Cronos20 Посмотреть сообщение
Поэтому, господа, не все так просто и очевидно.
Что Вы! Я и не считаю это банальной задачей, просто для начала подобный вариант полностью подойдет, а в остальном я полностью согласен.
Made All in China - MAC OS...

Последний раз редактировалось S-HaCK XORitY; 28.10.2011 в 03:46.
S-HaCK XORitY вне форума Ответить с цитированием
Старый 07.12.2011, 14:55   #10
Грачья
Пользователь
 
Регистрация: 01.12.2011
Сообщений: 10
По умолчанию

Цитата:
Сообщение от S-HaCK XORitY Посмотреть сообщение
aferistz
В моем примере можно явно отловить, момент при нехватке кол-ва символов и выдать соответствующее сообщение (с юзером надо общаться), а по поводу регулярок, не спорю, сам в основном preg'ом пользуюсь, просто все забыли про ereg, вот я и решил напомнить)))
Это молодец что ты хотел напомнить. Но так как это не работает, то считай что задачка еще не решена. Программистом все равно каким методом решить задачу, самое главное, что бы оно работало.
Ваш метод сработал бы (Я так думаю) но из за ereg не будет работать (новой версии конечно).
Грачья вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
MFC проверка пароля Kukurudza Общие вопросы C/C++ 1 01.10.2011 17:42
проверка пароля tr1x Общие вопросы Delphi 12 27.02.2011 13:05
Проверка пароля помогите!!! Flippp Общие вопросы C/C++ 6 23.06.2009 14:24
Проверка пароля Vladya Помощь студентам 1 20.12.2008 21:13
проверка пароля <-=SG=-> Общие вопросы Delphi 4 04.11.2008 19:44