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

Запрет символов при регистрации


Grek

Вопрос

Приветсвую всех.

 

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

 

правильно ли? - а-я А-Яa-zA-Z0-9\s_\-

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

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

  • 0

Если речь о регулярном выражении, то

а-яА-ЯёЁ - русские буквы

a-zA-Z - латинские

0-9 - цифры

\s - пробелы

_ - подчёркивание

\- - дефис?

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

  • 0

Register.php

проверку вставить после:

		//-----------------------------------------
	// Test dname
	//-----------------------------------------

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

  • 0
Song, в 2.2(а может и в 2.1) и выше это в админке настраивается :D
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Судя по тексту

Символы, допустимые в именах пользователей

Если опция включена, Invision Board при регистрации будет запрещать использование в именах пользователей символов, отсутствующих в списке.

 

Чтобы разрешить использование только цифр и букв, используйте комбинацию: a-zA-Z0-9

в админке, как раз регулярное выражение тут и ожидается...

Я сразу почувствовал себя глубоким стариком, отставшим от жизни... :D

 

Grek, по идее, мыслит правильно, просто не принял во внимание тот факт, что буква «Ё» в таблице символов располагается не между «Е» и «Ж», а где попало... ;)

 

Вечером точно скажу, какая там должна быть строка.

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

  • 0

Итак, Song, как обычно, абсолютно правильно указал место. Обратившись в файл sources/action_public/register.php, находим вот такой блок кода:

		if( $this->ipsclass->vars['username_characters'] )
	{
		$check_against = preg_quote( $this->ipsclass->vars['username_characters'], "/" );

		if( !preg_match( "/^[".$check_against."]+$/i", $_POST['UserName'] ) && $this->ipsclass->vars['ipbli_usertype'] == 'username' )
		{
			$msg = str_replace( '{chars}', $this->ipsclass->vars['username_characters'], $this->ipsclass->vars['username_errormsg'] );
			$form_errors['username'][$msg] = $msg;
		}

		if( !preg_match( "/^[".$check_against."]+$/i", $_POST['members_display_name'] ) && $this->ipsclass->vars['auth_allow_dnames'] )
		{
			$msg = str_replace( '{chars}', $this->ipsclass->vars['username_characters'], $this->ipsclass->vars['username_errormsg'] );
			$form_errors['dname'][$msg] = $msg;
		}
	}

Проверка производится по регулярному выражению "/^[".$check_against."]+$/i". Следовательно, мы могли бы в строке в админке написать: а-яА-Яa-zA-Z0-9\s_\-, или даже \w\s\-, и были бы почти счастливы, но вот незадача: при сохранении настройки до БД не доходит символ "\" (бэкслэш), а заменяется на свой HTML-код 092. Безопасность-с!

Поэтому я поставил вот такую строку:

a-zA-Z0-9а-яА-ЯёЁ_ -

где вместо \s использовал тупо пробел. В принципе, условию задачи удовлетворяет, ведь мы хотели, чтоб можно было использовать именно пробел, а неразрывные пробелы и табуляторы нам нафиг не нужны. :D

Потестировал - работает. Советую поставить строку и тоже потестировать.

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

  • 0
Как можно запретить использование в одном нике сразу и русских и латинских символов? (Это очень полезно для избежания подделки ников)
Ссылка на комментарий
Поделиться на других сайтах

  • 0
Как можно запретить использование в одном нике сразу и русских и латинских символов? (Это очень полезно для избежания подделки ников)

 

и ещё до кучи.

как сделать, чтобы разрешить при регистрации использование и русских и латинских отображаемых имён, а имя пользователя только латинскими?

в админке символы, допустимые в именах пользователей действует сразу для двух этих пунктов

очень нужно для чата.

версия 2.34

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

  • 0
  • 0
Запретить смешивание русских и английских букв в логине

не работает-просто всё нормально регается, как обычно, никаких ошибок, вообще ничего.

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

  • 0

2Song, большое спасибо.

 

 

2Mantius, всё работает на ура. Только что проверял. Возможно вы просто напросто забыли загрузить изменёные файлы register.php и lang_register.php на сервер :D

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

  • 0

Кажись, разобрался, в мануале вставлять перед

//-----------------------------------------

// More unicode..

//-----------------------------------------

 

$len_u = preg_replace

а я вставил перед

//-----------------------------------------

// More unicode..

//-----------------------------------------

 

$len_d = preg_replace

Исправил, теперь всё работает, респект автору!

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

  • 0
Странно я в файл lang_register.php добавляю константу err_rus_en_user_name cо своим текстом, но при ошибке выводиться текст константы 'reg_error_username_taken'
Ссылка на комментарий
Поделиться на других сайтах

  • 0

Странно я в файл lang_register.php добавляю константу err_rus_en_user_name cо своим текстом, но при ошибке выводиться текст константы 'reg_error_username_taken'

то же самое О.о

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

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

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

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

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

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

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

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

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

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

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

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