![]() |
![]() |
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 |