The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Подлог имён в форуме"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Информационная безопасность (Public)
Изначальное сообщение [ Отслеживать ]

"Подлог имён в форуме"  
Сообщение от free_user on 27-Янв-08, 16:18 
Люди выбирают ники из русских и латинских букв. Некоторые совпадают: О-O 3-З Ы-Ьl и т.д. Так можно ввести в заблуждение участников форума. Посоветуйте пожалуйста алгоритмы/таблицы замен совпадающих символов.
Думаю, при регистрации просто вырезать "плохие" символы и сравнивать всё что осталось с такими же обрезками существующих имён - плохая идея. Или хорошая?
Других идей пока нет.
P.S. Внешний вид форума - настраивается, шрифты могут быть разными.
Высказать мнение | Ответить | Правка | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "Подлог имён в форуме"  
Сообщение от angra (ok) on 28-Янв-08, 04:11 
Если разбираешься в перле, то могу скинуть на мыло код решающий подобную задачу

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "Подлог имён в форуме"  
Сообщение от free_user on 28-Янв-08, 10:07 
Жизнь заставит - буду и в перле разбираться =)
Собственно нужен только код для преобразования новых и старых имён в то, что потом можно просто сравнить (кодировка UTF-8 если важно). Почта у меня "free_user_" на сервере майлру, но если можно, лучше код или ссылку прямо тут выложить (вдруг кому надо).
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "Подлог имён в форуме"  
Сообщение от angra (ok) on 29-Янв-08, 01:53 
Кусок кода для проверки всей базы на наличие "дубликатов". В $sth запрос, возвращающий первым полем уникальный идентификатор записи(для простоты id), вторым собственно "имя". Используется utf8
  my %names;
  my @dupes;
  while (my @row=$sth->fetchrow_array) {
#собственно этот цикл совершает все трансформации и в хеш names попадают записи в которых ключ это "имя" после трансформаций, а значение это хешреф состоящий из пар id->"имя"(нетронутое трансформацией).
    use utf8;
    my $s=$row[1];
    use Encode;
    Encode::_utf8_on($s);
    $s=lc($s); #перевод в нижний регистр
    $s=~tr/etopahkxcbmЁё/еторанкхсвмее/; #преобразование английских в русские и ё в е
    $s=~tr/- \t_.,!?"'//d; #убирание пробелов и прочих знаков,возможно данная строка вам не нужна
    s/([йцукенгшщзхъфывапролджэячсмитьбюее])\1+/$1/g; #убирание подряд идущих русских символов, возможно стоит добавить a-z в класс
    Encode::_utf8_off($s);
    $names{$s}->{$row[0]}=$row[1];
  }
#теперь мы проходимся по names
  foreach my $k (keys %names) {
    my @t=keys %{$names{$k}};
    next if @t==1;
#а вот тут пора делать что-то с дубликатами. Напоминаю что в $names{$k} у нас хешреф в котором пары id->"имя" совпашие после преобразования имен. Например можно их вывести таким образом
   print "$_ ->  $names{$k}->{$_}\n" foreach @t
  }
Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "Подлог имён в форуме"  
Сообщение от free_user on 29-Янв-08, 09:16 
Спасибо, только не совсем понятно:

>$s=lc($s); #перевод в нижний регистр
>$s=~tr/etopahkxcbmЁё/еторанкхсвмее/; #преобразование английских в русские и ё в е

Откуда Ё мы уже в нижнем регистре?

>3-З Ы-Ьl

А от такого поможет? Тут точно все возможные варианты?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "Подлог имён в форуме"  
Сообщение от angra (ok) on 29-Янв-08, 10:11 
>Откуда Ё мы уже в нижнем регистре?

Согласен лишнее, осталось от варианта, когда не использовался юникод
>>3-З Ы-Ьl
>А от такого поможет? Тут точно все возможные варианты?

Я сказал подобную, а не такую же. В моем ТЗ это не требовалось. Поэтому и спрашивал про знание перла ибо нужна будет адаптация к вашему варианту. Кстати если строки будут получены не в utf8 или не из базы данных, то могут понадобится дополнительные изменения, работа с юникодом в перле таит в себе массу сюрпризов.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "Подлог имён в форуме"  
Сообщение от free_user on 29-Янв-08, 17:20 
С кодировкой я справлюсь, алгоритм понятен. Спасибо angra!

Но нужна ещё полная таблица замен.
Ну или хоть каким словом это всё по научному называется (чтоб поиск попробовать)?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру