Перейти к контенту
  • 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ат ?:

'~^

и

+$~'

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить на вопрос...

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

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

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

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

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

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

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

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