К списку форумов К списку вопросов
PHP и функция ereg() - не работает проверка. Не могу понять почему.
cnyx
27.04.2004 - 12:18
У меня есть форма из которой я получаю данные. Потом эти данные проверяются в отдельной функции и эта функция в результате ошибки возвращает 1, если нет ошибок, то возвращается 0.
В этой функции проверяется длина данных и символы, содержащиеся в данных. Вот для проверки пароля у меня используется следующий кусок кода:
if (empty($varforval)) {echo 'Login is empty.<br>'; return 1;}
elseif ((strlen($varforval) < 3) or (strlen($varforval) > 12)) {echo 'Login is too short or long.<br>'; return 1;}
elseif (!ereg("[a-z]*",$varforval) ) {echo 'Login is contaien error-simbols.<br>'; return 1;}
break;
Если знак "!" перед вызовом функции ereg() стоит, то тогда значения логина как "ааа" и "111" проходят, хотя "111" проходить не должен. Если "!" убрать, то не проходит ничего. Вот я и не могу понять в чем здесь кроется причина. Прошу совета.
Cool
1 - 27.04.2004 - 12:26
Попробуй, у меня вот такое работает: elseif (ereg("[1-9A-Z]+",$varforval) ) {echo 'Login is contaien error-simbols.<br>'; return 1;}
Cool
2 - 27.04.2004 - 12:27
Черт, про ноль забыл... 0-9A-Z
nd
3 - 27.04.2004 - 12:32
"^[a-z]*$"
cnyx
4 - 27.04.2004 - 13:45
"^[a-zA-Z0-9]*$" - вот такое заработало. Что теперь можно предпринять, чтобы он еще кирилицу держал? Логины то будут на фиглише, но вот имя пользователя и т.п. поля могут быть на русском.
nd
5 - 27.04.2004 - 13:49
батенька, читайте мануалы, они рулез
cnyx
6 - 27.04.2004 - 14:06
2 5
Сделал, просто вот так не работало "А-Я", а перечислением заработало "АБВГ..."
DIVЕR
7 - 27.04.2004 - 17:15
Я бы посоветовал воспользоваться PCRE - Perl Compatible Regular Expressions (по-моему так =) ). А также применять готовые классы, например, [[:alnum:]] - это буквы и цифры, по-моему, то, что тебе и надо. Но лучше добавить и "метасимволы":
 
if ( preg_match( '/^[[:alnum:]#$%*_~-]{2,12}$/', $varforval ) ) // good password
 
Например,
 
if ( preg_match( '/^[[:alnum:]#$%*_~-]{2,12}$/', 'фыва123#$' ) ) // good password
  exit("1");
else
  exit("0");
 
выводит 1

К списку вопросов на форуме Веб-дизайн

>>