GrayWarrior Опубликовано 16 Июня 2005 Жалоба Поделиться Опубликовано 16 Июня 2005 Как установить запрет на использование цифр и спец.символов в качестве первого символа в нике при регистрации? Поскольку в админке фильтры типа:1*2*=*?*не срабатывают, т.е. все равно пользователи могут регистрироватся с никами типа12345-=Вован=-@mail.ruхотелось бы как то побороть это бессилие админки. Какие будут идеи и предложения? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 16 Июня 2005 Жалоба Поделиться Опубликовано 16 Июня 2005 Предложения только ковырнуть кодregister.phpнайти if (strlen($len_u) > 32) { $this->show_reg_form('err_no_username'); return; }Добавить проверку: if (preg_match('~^[0-9=@]~', $in_username)) { $this->show_reg_form('err_no_username'); return; } или так if (!preg_match('~^\w~', $in_username)) { $this->show_reg_form('err_no_username'); return; } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GrayWarrior Опубликовано 16 Июня 2005 Автор Жалоба Поделиться Опубликовано 16 Июня 2005 (изменено) Спасиб! Утром попробую и отпишусь по результатам. Добавлено 18.06.05: Да, все работает так, как надо!GiV - респект и благодарности! Изменено 18 Июня 2005 пользователем GrayWarrior Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 Destruction Опубликовано 18 Июня 2005 Жалоба Поделиться Опубликовано 18 Июня 2005 Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 18 Июня 2005 Жалоба Поделиться Опубликовано 18 Июня 2005 Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать.<{POST_SNAPBACK}>да не только в PHP. Ну скажем так есть часть людей хорошо пишущих на PHP и плохо знающих PREG, они умудряются писать свои парсеры, иногда получаются очень мощные вещи. А так нужен опыт и нужно умение создавать конструкции, т.е. видеть глазами PREG парсера, но в основном конечно опыт, просто почитать по теме помочь делу может на 50% Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GrayWarrior Опубликовано 19 Июня 2005 Автор Жалоба Поделиться Опубликовано 19 Июня 2005 Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать.<{POST_SNAPBACK}>Спасибо за совет, обязательно почитаю. Для полного счастья, и чтобы юзеры вопросами не доставали, ищем вlang_register.php строчку'err_no_username' => "Необходимо ввести имя пользователя от 3 до 32 символов",и меняем на что-то типа:'err_no_username' => "Необходимо ввести имя пользователя от 3 до 32 символов. Первым символом обязательно должна быть буква алфавита (из диапазона Aa-Zz или Аа-Яя).",либо определяем свою переменную, тогда в коде от GiV подставляем её вместо 'err_no_username'.Если есть пользователи, которые юзают английский язык, то не забываем внести изменения ещё и в английский lang_register.php Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 maninlove13 Опубликовано 20 Июня 2005 Жалоба Поделиться Опубликовано 20 Июня 2005 А можете немного код доработать? Чтобы не только в начале запрещено было использовать цифры и символы, но и вообще в нике. А то задрали уже всякие Вася_128923 и так далее Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GrayWarrior Опубликовано 2 Июля 2005 Автор Жалоба Поделиться Опубликовано 2 Июля 2005 maninlove13Осмелюсь предположить, что для этого достаточно в коде от GiV заменить функцию preg_match() на preg_match_all(). Попробуй, должно сработать. ЗЫ Если получится, не забудь в lang_register.php текст алерта подправить. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 olegyarp Опубликовано 2 Июля 2005 Жалоба Поделиться Опубликовано 2 Июля 2005 Неножко доработал мод if (preg_match('~^[0-9=@_*?:%;№"$&+]~', $in_username)) { $this->show_reg_form('err_no_username'); return; }теперь ругается на все кроме букв и знака "-" . Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GrayWarrior Опубликовано 3 Июля 2005 Автор Жалоба Поделиться Опубликовано 3 Июля 2005 Ценное дополнение! Надо будет у себя подправить. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 replicant Опубликовано 29 Августа 2005 Жалоба Поделиться Опубликовано 29 Августа 2005 Он только точки почему-то пропускает, хотя и так намного лучше Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 charmed_knight Опубликовано 30 Августа 2005 Жалоба Поделиться Опубликовано 30 Августа 2005 Предложения только ковырнуть код в файле register.phpнайти: if (strlen($len_u) > 32) { $this->show_reg_form('err_no_username'); return; }Добавить ниже: if (preg_match('~^[0-9=@]~', $in_username)) { $this->show_reg_form('err_no_username'); return; }так ? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 charmed_knight, ну да, именно так..Заюзал preg_match_all: не работает, юзер может регаца с любым ником.А если юзать preg_matct, то все ок.. Но мне надо, чтобы юзер не мог у себя в нике прописать ничего, кроме A-Z, А-Я, -, и !.Как осуществить? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 charmed_knight, ну да, именно так..Заюзал preg_match_all: не работает, юзер может регаца с любым ником.А если юзать preg_matct, то все ок.. Но мне надо, чтобы юзер не мог у себя в нике прописать ничего, кроме A-Z, А-Я, -, и !.Как осуществить?<{POST_SNAPBACK}> if (!preg_match('~^[A-Za-zА-Яа-я\-!]+$~', $in_username)) { $this->show_reg_form('err_no_username'); return; } Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 GiV, thx! все работает ![1125490891:1125492126]С воскл. знаком трабл. Не могу с ним зарегаться. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 а какой ник? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 Допустим, step! не регистрируется. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 попробуйте if (!preg_match('~^[A-Za-zА-Яа-я\-!]+$~', $in_username)) { [b]echo htmlspecialchars($in_username); exit;[/b] $this->show_reg_form('err_no_username'); return; } Результаты работы в студию... Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 step и символ & #33; Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 shwale Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 if (!preg_match('~^[A-Za-zА-Яа-я\-\!]+$~', $in_username)) { Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 shwale, все равно не регистрирует Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 GiV Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 ! вроде не является метасимволом... хотя... сдается что там преобразование ! -> & #33; Если это действительно так, то$in_username = str_replace('& #33;', '!', $in_username); if (!preg_match('~^[A-Za-zА-Яа-я\-!]+$~', $in_username)) { $this->show_reg_form('err_no_username'); return; } $in_username = str_replace('!', '& #33;', $in_username); пробелы м/у & и #убрать Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 PhreakeR Опубликовано 31 Августа 2005 Жалоба Поделиться Опубликовано 31 Августа 2005 GiV, теперь все окей.Ещё раз спасибо. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
0 charmed_knight Опубликовано 1 Сентября 2005 Жалоба Поделиться Опубликовано 1 Сентября 2005 вопрос, а 4то будет с мемберами которые уже имеют недопустимые знаки в нике ? и еще, где нужно вводить символы, которые мы хотим разрешать. Здесь [A-Za-zА-Яа-я\-!] ? Вот, к примеру нам нужно разрешить только символы от а(A) до я(Я), и от a(A) до z(Z), и "_"(под4еркивание), и "-", и "@", и ВСЕ!. Т.е. кроме ентих символов срабатывает фильтр.Так ?:if (!preg_match('~^[A-Za-zА-Яа-я\-_\--\-@]+$~', $in_username)) {echo htmlspecialchars($in_username); exit;$this->show_reg_form('err_no_username');return; } а енти символы в данном слу4ае 4то зна4ат ?:'~^ и +$~' Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Вопрос
GrayWarrior
Как установить запрет на использование цифр и спец.символов в качестве первого символа в нике при регистрации?
Поскольку в админке фильтры типа:
1*
2*
=*
?*
не срабатывают, т.е. все равно пользователи могут регистрироватся с никами типа
12345
-=Вован=-
@mail.ru
хотелось бы как то побороть это бессилие админки.
Какие будут идеи и предложения?
Ссылка на комментарий
Поделиться на других сайтах
23 ответа на этот вопрос
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.