Перейти к контенту
  • 0

Регистрация: Запрет на использование цифр


Вопрос

Как установить запрет на использование цифр и спец.символов в качестве первого символа в нике при регистрации?

 

Поскольку в админке фильтры типа:

1*

2*

=*

?*

не срабатывают, т.е. все равно пользователи могут регистрироватся с никами типа

12345

-=Вован=-

@mail.ru

хотелось бы как то побороть это бессилие админки.

 

Какие будут идеи и предложения?

Ссылка на комментарий
Поделиться на других сайтах

Рекомендуемые сообщения

  • 0

Предложения только ковырнуть код

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

Спасиб! Утром попробую и отпишусь по результатам. ;)

 

Добавлено 18.06.05:

 

Да, все работает так, как надо!

GiV - респект и благодарности! :D

Изменено пользователем GrayWarrior
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать.
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать.

да не только в PHP. Ну скажем так есть часть людей хорошо пишущих на PHP и плохо знающих PREG, они умудряются писать свои парсеры, иногда получаются очень мощные вещи. А так нужен опыт и нужно умение создавать конструкции, т.е. видеть глазами PREG парсера, но в основном конечно опыт, просто почитать по теме помочь делу может на 50%

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Вообще это очень важная тема в PHP - Регулярные Выражения называецца, мог бы и сам почитать.

Спасибо за совет, обязательно почитаю. :D

 

Для полного счастья, и чтобы юзеры вопросами не доставали, ищем в

lang_register.php строчку

'err_no_username'  => "Необходимо ввести имя пользователя от 3 до 32 символов",

и меняем на что-то типа:

'err_no_username'  => "Необходимо ввести имя пользователя от 3 до 32 символов. Первым символом обязательно должна быть буква алфавита (из диапазона Aa-Zz или Аа-Яя).",

либо определяем свою переменную, тогда в коде от GiV подставляем её вместо 'err_no_username'.

Если есть пользователи, которые юзают английский язык, то не забываем внести изменения ещё и в английский lang_register.php

Ссылка на комментарий
Поделиться на других сайтах

  • 0
А можете немного код доработать? Чтобы не только в начале запрещено было использовать цифры и символы, но и вообще в нике. А то задрали уже всякие Вася_128923 и так далее :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

maninlove13

Осмелюсь предположить, что для этого достаточно в коде от GiV заменить функцию preg_match() на preg_match_all().

Попробуй, должно сработать. :D

 

ЗЫ Если получится, не забудь в lang_register.php текст алерта подправить.

Ссылка на комментарий
Поделиться на других сайтах

  • 0

Неножко доработал мод

 

      if (preg_match('~^[0-9=@_*?:%;№"$&+]~', $in_username)) {
 $this->show_reg_form('err_no_username');
 return;
  }

теперь ругается на все кроме букв и знака "-" .

Ссылка на комментарий
Поделиться на других сайтах

  • 0
Предложения только ковырнуть код

 

в файле 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

charmed_knight, ну да, именно так..

Заюзал preg_match_all: не работает, юзер может регаца с любым ником.

А если юзать preg_matct, то все ок.. Но мне надо, чтобы юзер не мог у себя в нике прописать ничего, кроме A-Z, А-Я, -, и !.

Как осуществить?

Ссылка на комментарий
Поделиться на других сайтах

  • 0
charmed_knight, ну да, именно так..

Заюзал preg_match_all: не работает, юзер может регаца с любым ником.

А если юзать preg_matct, то все ок.. Но мне надо, чтобы юзер не мог у себя в нике прописать ничего, кроме A-Z, А-Я, -, и !.

Как осуществить?

   if (!preg_match('~^[A-Za-zА-Яа-я\-!]+$~', $in_username)) {
 $this->show_reg_form('err_no_username');
 return; 
  }

Ссылка на комментарий
Поделиться на других сайтах

  • 0

попробуйте

 if (!preg_match('~^[A-Za-zА-Яа-я\-!]+$~', $in_username)) {
[b]echo htmlspecialchars($in_username); 
exit;[/b]
$this->show_reg_form('err_no_username');
return; 
 }

 

Результаты работы в студию...

Ссылка на комментарий
Поделиться на других сайтах

  • 0

! вроде не является метасимволом... хотя...

 

сдается что там преобразование ! -> & #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

вопрос, а 4то будет с мемберами которые уже имеют недопустимые знаки в нике ? :D

 

и еще, где нужно вводить символы, которые мы хотим разрешать. Здесь [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ат ?:

'~^

и

+$~'

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить на вопрос...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.