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

запрет использования похожих ников на форуме


winnie

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

сражу скажу ©перта идея с чата пхп.спб.ру

проверял - вроде работает

вот сама модификация

 

в файле register.php

ищем

    /*-------------------------------------------------------------------------*/
// create_account
// ------------------
// Now this is a really good subroutine. It adds the member

и ПЕРЕД этим добавляем

function _pre_preg($nick) {

   unset($reg);
   $reg['q']='q';
   $reg['w']='w';
   $reg['e']='[eеё]';
   $reg['r']='[rг]';
   $reg['t']='[tт]';
   $reg['y']='[yу]';
   $reg['u']='[uи]';
   $reg['i']='[i1l!]';
   $reg['o']='[oо0]';
   $reg['p']='[pр]';
   $reg['a']='[aа]';
   $reg['s']='[s5]';
   $reg['d']='d';
   $reg['f']='f';
   $reg['g']='[gд]';
   $reg['h']='[hн]';
   $reg['j']='j';
   $reg['k']='[kк]';
   $reg['l']='[l1i!]';
   $reg['z']='z';
   $reg['x']='[xх%]';
   $reg['c']='[cс]';
   $reg['v']='[vuи]';
   $reg['b']='[bвь]';
   $reg['n']='[nпл]';
   $reg['m']='[mм]';
   $reg['й']='[йиu]';
   $reg['ц']='ц';
   $reg['у']='[уy]';
   $reg['к']='[кk]';
   $reg['е']='[еeё]';
   $reg['н']='[нh]';
   $reg['г']='[гr]';
   $reg['ш']='[шwщ]';
   $reg['щ']='[щwш]';
   $reg['з']='[з3э]';
   $reg['х']='[хx%]';
   $reg['ъ']='[ъь]';
   $reg['ф']='ф';
   $reg['ы']='(ы|ь[i1l!]?)';
   $reg['в']='[вb]';
   $reg['а']='[аa]';
   $reg['п']='[пn]';
   $reg['р']='[рp]';
   $reg['о']='[оo0]';
   $reg['л']='[лn]';
   $reg['д']='д';
   $reg['ж']='ж';
   $reg['э']='[э3з]';
   $reg['я']='я';
   $reg['ч']='[ч4]';
   $reg['с']='[сc]';
   $reg['м']='[мm]';
   $reg['и']='[иuй]';
   $reg['т']='[тt]';
   $reg['ь']='[ьb]';
   $reg['б']='[б6]';
   $reg['ю']='(ю|[!1il][oо0])';
   $reg['ё']='[ёеe]';
   $reg['1']='[1il!]';
   $reg['2']='2';
   $reg['3']='[3зэ]';
   $reg['4']='[4ч]';
   $reg['5']='[5s]';
   $reg['6']='[6б]';
   $reg['7']='7';
   $reg['8']='8';
   $reg['9']='9';
   $reg['0']='[0оo]';
   $reg['_']='_';
   $reg['~']='[~^]';
   $reg['!']='[!1li]';
   $reg['@']='@';
   $reg['#']='#';
   $reg['$']='[$]';
   $reg['%']='[%x]';
   $reg['^']='[^~]';
   $reg['*']='[*]';
   $reg['(']='[(]';
   $reg[')']='[)]';
   $reg['=']='=';
   $reg['+']='[+]';
   $reg['.']='[.]';
   $reg['-']='-';
   
   $n=strtolower($nick);
   $r="";
   for ($i=0; $i<strlen($nick); $i++) {
      $r.=$reg[$n[$i]];
   }
   return "$r";
   }

 

внутри функции находим запросы

$DB->cache_add_query( 'login_getmember', array( 'username' => strtolower($in_username) ) );
$DB->cache_exec_query();

меняем на

$DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where'=>"lower(name) REGEXP '".$this->_pre_preg($in_username)."'" ) );
$DB->simple_exec();

 

и чуть ниже

$DB->cache_add_query( 'login_getmember', array( 'username' => strtolower($unicode_name) ) );
$DB->cache_exec_query();

(этот отличается от предыдущего:D)

меняем на

$DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where'=>"lower(name) REGEXP '".$this->_pre_preg($unicode_name)."'" ) );
$DB->simple_exec();

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

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

Вот так: "$n[$i]" никогда не пиши. Это вырезка не символа, а байта. На UTF-8 и т.п. в частности и с mb_string вообще работать корректно не будет. Я понимаю ещё Мэтту на это наплевать, но у тебя-то не английский родной :D

 

"substr($n, $i, 1)"

 

А так - хорошая идея ;)

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

  • 1 год спустя...
  • 6 месяцев спустя...
Люди, а как это применить в версии 2.1.3? Там не совсем такой код как в 2.0.х

Практически аналогично!

Идёшь в файлик sources\action_public\register.php

ищем

 

	/*-------------------------------------------------------------------------*/
// create_account
// ------------------
// Now this is a really good subroutine. It adds the member

и ПЕРЕД этим добавляем

 

function _pre_preg($nick) {

  unset($reg);
  $reg['q']='q';
  $reg['w']='w';
  $reg['e']='[eеё]';
  $reg['r']='[rг]';
  $reg['t']='[tт]';
  $reg['y']='[yу]';
  $reg['u']='[uи]';
  $reg['i']='[i1l!]';
  $reg['o']='[oо0]';
  $reg['p']='[pр]';
  $reg['a']='[aа]';
  $reg['s']='[s5]';
  $reg['d']='d';
  $reg['f']='f';
  $reg['g']='[gд]';
  $reg['h']='[hн]';
  $reg['j']='j';
  $reg['k']='[kк]';
  $reg['l']='[l1i!]';
  $reg['z']='z';
  $reg['x']='[xх%]';
  $reg['c']='[cс]';
  $reg['v']='[vuи]';
  $reg['b']='[bвь]';
  $reg['n']='[nпл]';
  $reg['m']='[mм]';
  $reg['й']='[йиu]';
  $reg['ц']='ц';
  $reg['у']='[уy]';
  $reg['к']='[кk]';
  $reg['е']='[еeё]';
  $reg['н']='[нh]';
  $reg['г']='[гr]';
  $reg['ш']='[шwщ]';
  $reg['щ']='[щwш]';
  $reg['з']='[з3э]';
  $reg['х']='[хx%]';
  $reg['ъ']='[ъь]';
  $reg['ф']='ф';
  $reg['ы']='(ы|ь[i1l!]?)';
  $reg['в']='[вb]';
  $reg['а']='[аa]';
  $reg['п']='[пn]';
  $reg['р']='[рp]';
  $reg['о']='[оo0]';
  $reg['л']='[лn]';
  $reg['д']='д';
  $reg['ж']='ж';
  $reg['э']='[э3з]';
  $reg['я']='я';
  $reg['ч']='[ч4]';
  $reg['с']='[сc]';
  $reg['м']='[мm]';
  $reg['и']='[иuй]';
  $reg['т']='[тt]';
  $reg['ь']='[ьb]';
  $reg['б']='[б6]';
  $reg['ю']='(ю|[!1il][oо0])';
  $reg['ё']='[ёеe]';
  $reg['1']='[1il!]';
  $reg['2']='2';
  $reg['3']='[3зэ]';
  $reg['4']='[4ч]';
  $reg['5']='[5s]';
  $reg['6']='[6б]';
  $reg['7']='7';
  $reg['8']='8';
  $reg['9']='9';
  $reg['0']='[0оo]';
  $reg['_']='_';
  $reg['~']='[~^]';
  $reg['!']='[!1li]';
  $reg['@']='@';
  $reg['#']='#';
  $reg['$']='[$]';
  $reg['%']='[%x]';
  $reg['^']='[^~]';
  $reg['*']='[*]';
  $reg['(']='[(]';
  $reg[')']='[)]';
  $reg['=']='=';
  $reg['+']='[+]';
  $reg['.']='[.]';
  $reg['-']='-';

  $n=strtolower($nick);
  $r="";
  for ($i=0; $i<strlen($nick); $i++) {
  $r.=$reg[substr($n, $i, 1)];
  }
  return "$r";
  }

внутри функции находим запросы

 

$this->ipsclass->DB->cache_add_query( 'login_getmember', array( 'username' => strtolower($in_username) ) );
	$this->ipsclass->DB->cache_exec_query();

меняем на

 

		$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where'=>"lower(name) REGEXP '".$this->_pre_preg($in_username)."'" ) );
	$this->ipsclass->DB->simple_exec();

и чуть ниже

 

			$this->ipsclass->DB->cache_add_query( 'login_getmember', array( 'username' => $this->ipsclass->DB->add_slashes(strtolower($unicode_name) ) ));
		$this->ipsclass->DB->cache_exec_query();

(этот отличается от предыдущегоsmile.gif)

меняем на

 

$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'members', 'where'=>"lower(name) REGEXP '".$this->_pre_preg($unicode_name)."'" ) );
		$this->ipsclass->DB->simple_exec();

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

  • 5 месяцев спустя...

А нет ли мыслей насчёт 1.3.1?

 

На сколько я понял отталкиваться нужно от

		$DB->query("SELECT id FROM ibf_members WHERE LOWER(name)='".strtolower($in_username)."'");
	$name_check = $DB->fetch_row();

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

Нет. Регистрация пропустит "Barakud и Barakkud". Он не пропустит, если вместо "a" (англ.), будет стоять "а" (русс.). А верхний вариант - пропустит, так в первом нике одна К, а в другом их две :D
Ссылка на комментарий
Поделиться на других сайтах

  • 4 месяца спустя...
Регексп долго же будет выполняться в немаленькой таблице пользователей, по другому тут надо бы подойти :D...
Ссылка на комментарий
Поделиться на других сайтах

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

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

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

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

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

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

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

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

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

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

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