Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как запретить регистрацию похожих никнеймов
цитата
20/01/17 в 20:55
 kbot
Предположим, на сайте есть пользователь с ником, например, "Ольга".
Как бы запретить регистрацию ников, которые выглядят так же или очень похоже, например, с русской "а" или "О", или с нулём вместо "О" и т.п.?

Нужна функция, которая сравнивает два ника и говорит, слишком ли они похожи, или нет.
цитата
20/01/17 в 21:41
 dizziness
замутить ИИ который будет решать, слишком похожи ники или нет trollface.png


p.s.

==================================
пардон, подкрепил знания в доках icon_biggrin.gif

<?php

$var_1 = 'Ольга';
$var_2 = '0льга';

similar_text($var_1, $var_2, $percent);

echo $percent;

ну а дальше, задай процент, который устроит, и вперед.


p.p.s. ну пых, каждый день что-то новое smail101.gif
цитата
21/01/17 в 14:16
 kbot
Наверное, нужно даже не столько знать, как сильно похожи две строки, сколько уметь приводить строку к некоему "стандартному" виду. Например, заменять отдельные символы по правилам типа:
'0' => 'O',
'1' => 'l',
'А' => 'A',# cyr->lat
'а' => 'a',# cyr->lat
...

В БД дополнительно записаны приведённые к стандартному виду имена аккаунтов. При реге нового в БД ищется совпадение приведённого к стандартному виду нового имени с уже существующими в БД. Если нашлось - нельзя регаться.

Собственно, нужна как можно более полная таблица похожих юникод-символов.
цитата
21/01/17 в 15:56
 dizziness
icon_cool.gif
цитата
22/01/17 в 22:49
 IgorZ
Как вариант переводить в транслит и снова сравнивать с транслитом оригинала транслит(ввод)=транслит(оригинал): olga==olga = true, этот пример только с разными раскладками катит, где О русская меняется на O английскую.

Но можно функцию приведения к единому транслиту сделать для каждой раскладки и цифры учесть.


Есть еще поиски по фонетическому сравнению, туда не копал.


Эта страница в полной версии