помогите плиз составить регулярное выражение

kia007

Новичок
помогите плиз составить регулярное выражение

всем привет!
У меня есть такой код:
PHP:
$userName = $_POST['userName'];     
$userName = AddSlashes($userName);       
if(!eregi("^[a-zA-Z0-9_+=-\^\*\(\)\[\]\{\}\:\~\<\>\.]*$", $userName))    
{       
  //недопустимые символы в имени       
  $userName = -1;       
  $errorCode = "102";       
  echo ("userName=$userName");       
  echo ("&");       
  echo ("errorCode=$errorCode");       
  echo ("&");       
  exit;     
}
Мне хочется пропустить англ. буквы цифры и символы []{}()-_=+~:<>|^.*
Но походу мое условие не работает:( Подскажите как правильно составить регулярное условие :confused:

И еще подскажите какие символы из перечисленных мною могут быть опасными, я их исключу, хотя не хочется- вроде достаточно распространненные символы...

ЗЫ: нормально ли что я вызываю $userName = AddSlashes($userName); до eregi? :)

Всем заранее спасибо!
 

kia007

Новичок
Вы мне давали эту ссылку по аське. Как ни странно я почему то ждал от Вас здесь ответ...примерно в таком виде в каком Вы его дали.
Я хочу послушать мнение живых людей. Буду очень благодарен если кто нить ответит.
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
kia007
Читать инфо. по ссылке пробовали?
Зачем addslashes до проверки?

-~{}~ 03.12.07 22:24:

http://www.pcre.ru - поможет в отладке
 

alexcrown

Новичок
Работает, только когда \] последний в группе, т.е. вот так "^[a-zA-Z0-9_+=-\^\*\(\)\[\{\}\:\~\<\>\.\]]*$"
 

@ndrey

Новичок
Мне хочется пропустить англ. буквы цифры и символы []{}()-_=+~:<>|^.*
$username - имя пользователя? не проще ли поставить проверку на наличие допустимых символов в вашем случае?
в добавок preg_match (каменты рулят)
 

kia007

Новичок
Mr_Max
пробовал, не помогло))
Ок addslashes сделаю после проверки.
С отладчиком тренируюся...
alexcrown
К сожадению и такое выражение не работает...может из за того что у меня установлен пхп 3??

А есть ли среди указанных мной символов нежелательные- опасные?? Если есть как сделать чтоб они были безопасными??

-~{}~ 03.12.07 23:50:

@ndrey
так а у меня по моему и стоит проверка на допустимые символы...


Блин я думал выражение для анлг букв+ цифр+ каких то дополнительных символов не так сложно делать:(
 

dimagolov

Новичок
PHP 3 ???? скоро будет PHP 6, а 4 уже не поддерживается...

можно проверять наличие недопустимых (хотя бы одного) или соответствие всех допустимым. шаблон захватит любой недопустимый, только его оформить как регулярку надо. какую ф-ю использовать и что делать с ее результатом - по вкусу.
 

kia007

Новичок
опасные имеется ввиду, что возможно они являются какими нить управляющими символами mysql например. А так незнаю я в хакерстве не силен....поэтому и спрашиваю
 

kia007

Новичок
@ndrey
читал я это...это та же собственно ссылка.
Вот я и хотел бы узнать как правильно задать шаблон. Все только ссылками кидаются в меня:)))))
 

@ndrey

Новичок
Автор оригинала: kia007
@ndrey
читал я это...это та же собственно ссылка.
Вот я и хотел бы узнать как правильно задать шаблон. Все только ссылками кидаются в меня:)))))
ну раз вы читали, то что здесь делать то?
1. взять preg_match
2. составить допустимый или недопустимый символьный класс
3. впихнуть в preg_match
4. как впихнуть посмотреть, например в каментах к preg_match (в мане)
5. для понимания используйте отладочку:
PHP:
    if (preg_match($pattern, $subject, $matches)) var_dump($matches);
вкурится быстро, только некрофилию вылечить надо :)
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
@ndrey
ниможет он
preg_match
PHP >= 4

Хотя хз.
eregi тоже
PHP >= 4

А вообще
Регуляры были в php3?
:confused:
 

@ndrey

Новичок
Mr_Max я об этом уже намекал и про лечение некрофилии (апдейта пхп сказал), надеюсь он тоже об этом понял.
а вот про регуляры в 3 пхп тоже интересно. можть кто просветит?
 

Wicked

Новичок
Я бы использовал
PHP:
preg_match("/^[".preg_quote("a-zA-Z0-9_+=-[]{}()-_=+~:<>|^.*", "/")."]*$/", ...)
А addslashes - вообще абсолютно бесполезная функция, т.к. добавлять какие-то абстрактные слэши оторванно от контекста "для чего" - полный бред.
 
Сверху