проверка на соответствие русских букв английским

TAN

Новичок
проверка на соответствие русских букв английским

К примеру пишем регистрацию в форуме. как проще сделать защиту от такой вещи:
ники Могр и Mорг внешне выглядят одинаково, но у второго M английская. при регистрации идет проверка. Если ник занят то не регистрируем, если свободен, то регистрируем. Естественно второй Mорг регится. Кто подскажет, как проще от этого защититься. Зараннее спаибо.
 

Serguitar

Новичок->продвинутый
А ты сделай регистрацию только ников, составленных из английских букв.
 

jonjonson

Guest
Я бы по другому сказал. Сделай проверку, что ник состоит либо только из русских букв, либо только латинских...
[а-яёА-ЯЁ] || [a-zA-Z]
 

Popoff

popoff.donetsk.ua
Нужно хранить в базе два варианта логинов: в таком виде, как их ввел пользователь и в упрощенном виде. В упрощенном варианте все буквы, которые могут быть похожи друг на друга, заменяются на одну любую из набора похожих. При поиске логина в базе (проверка при регистрации, вход и т.п.) сначала упрощаем логин, а потом ищем его в базе. Для показа логина на страницах и для сортировки используем исходный вариант.

Функция для упрощения логина:
PHP:
define_option('PASSPORT_LOGIN_SIMILAR',"eеё tт yу i1l!иuй oо0 rгpр aа 5s gд kк hнxх cс vbвьъ nпл mм wшщ 3зэ 4ч -+~^* :;");

function passport_login_simplify($login)
{
  $r=strtolower($login);
  $a=explode(' ',PASSPORT_LOGIN_SIMILAR);
  for($i=0;$i<count($a);$i++)
    if(!empty($a[$i]))
      $r=preg_replace("/[".$a[$i]."]/",$a[$i][0],$r);
  return $r;
}
В PASSPORT_LOGIN_SIMILAR хранится перечень похожих букв. Блоки разделены между собой пробелом. Буквы, входящие в один блок, считаются похожими.
 
Сверху