[BETA] Анти-клон 0.1.3

Здесь авторы могут постить бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!

[BETA] Анти-клон 0.1.3

Сообщение Carbofos 29.06.2006 19:34

Т.к. никто так и не решил сделать мод для публики по борьбе с клонами пользователей, попробую я.
Название условное, просто ничего не пришло в голову, предлагайте свои варианты :)

Схема работы такова:
Модифицируется таблица phpbb_users, в нее добавляется поле user_cleanname, в которое будет записывается строка, которая получится на выходе функции по "нормализации" ника.

Всего предусматривается 2 этапа: (схемы прилагаю)
1) замена букв на похожие по написанию (одним цветом обозначены символы, считающиеся одинаковыми)
Изображение
Это включает в себя также замену нескольких символов на 1, например, bI на Ы

2) выкидывание лишних символов: (серым цветов обозначены символы, которые будут выкидываться)
Изображение

При регистрации, по идее, тестировать на уникальность самих ников не обязательно, т.к. если 2 разных ника приводятся к одному и тому же "нормализованному", то они достаточно похожи.

Соответственно, поле в базе данных должно быть со сравнением cp1251_general_ci

Принимаются дополнительные идеи и замечания.

Принцип установки следующий:
- закрываем форум в админке, чтобы ничто не мешало (из админки не выходим)
- устанавливаем мод
- заходим в общие настройки форума и нажимаем кнопку, где "Переиндексировать имена пользователей" - для этого и выключали форум (впрочем, как оказалось, он это делает не очень медленно)
- после того, как пересчет закончится, включаем форум и заодно "Дополнительную проверку имен" (рядом с кнопкой).

В версии 0.1.1 добавлено автоматическое закрытие форумов при пересчете полей user_cleanname через админку.

В версии 0.1.2 исправлен баг - при переименовании юзеров в админке не обновлялось поле user_cleanname

В версии 0.1.3 исправлен незначительный баг в MOD Template, в самом моде ничего нового.
Вложения
anticlon013.zip
Мод по борьбе с клонами пользователей, версия 0.1.3
(4.13 Кб) Скачиваний: 443
Последний раз редактировалось Carbofos 07.07.2006 17:04, всего редактировалось 10 раз(а).
Аватара пользователя
Carbofos
phpBB 2.0.2
 
Сообщения: 158
Зарегистрирован: 04.03.2005 20:30


Сообщение ETZel 29.06.2006 20:15

Хорошо бы это сразу распространить на европу, не завязываясь на cp1251 (для каждой поддерживаемой кодировки составить свою таблицу, хотя бы для latin1/latin2)
И на cp1251_general_ci лучше не завязываться, а сразу сохранять user_cleanname в такой форме, чтобы для похожих имен поля были бинарно идентичны.

Символы, обозначенные серым цветом на второй картинке, на любом приличном форуме должны быть попросту запрещены (ИМХО).
Для полноты мода можно добавить и ограничения на длину и допустимые символы (правда, такой ограничитель в бете есть на phpbb.com)

Как опцию (спорную) можно добавить идентичность транслитерированных имен: clean('vasya') == clean('вася')
Аватара пользователя
ETZel
phpBB 1.4.4
 
Сообщения: 97
Зарегистрирован: 03.01.2006 11:47
Откуда: Челябинск

Сообщение ptzChanger 29.06.2006 20:48

идея хорошая ... мод нужный ... у меня на форуме уже была драка из-за ника ...
Петрозаводский форум http://sampo.sampo.ru общение и знакомства
Связь через ЛС.
Аватара пользователя
ptzChanger
phpBB 1.4.4
 
Сообщения: 86
Зарегистрирован: 03.11.2005 22:26

Сообщение Carbofos 30.06.2006 0:30

ETZel
Для мира пишущего латиницей, имхо, мод далеко не так востребован, как у нас, но я могу и ошибаться.

Может тогда сделать поле BINARY? Но тогда могут возникнуть непонятки с кодировкой, т.к. буквы расширенной латиницы совпадают с буквами кириллицы и в интернациональных форумах (или просто где кому-то придет в голову зарегить ник с одним из таких символов) может возникнуть путаница.
В случаях же, если поле текстовое, с заданной кодировкой сравнения, скажем, буква ö сохраниться в виде &какой-то-номер; (в случае кириллицы)

Покрывать же таблицей юникод - даже как-то страшно подумать об этом :)

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

Собственно, вся оговорка состоит в том, что соблюсти кодировку нужно лишь для того, чтобы в поле могли без проблем записаться символы кириллицы (ну и последующего их сравнения).

Добавлено спустя 1 час 23 минуты 58 секунд:

Нужен совет: т.к. в preg_replace в качестве аргумента replace нужно писать конкретные знаки, то как это лучше сделать, учитывая, что некоторые из них будут русскими?
Если я сделаю русскую букву типа chr(...), не будет ли это потенциальным источником проблем при использовании в полевых условиях? Хотя я и прочитал назидание:
bear in mind that php doesn't really care about character sets. php strings are just arbitary byte sequences thier meaning (especailly when you go beyond code 127) depends entirely on whats interpreting the data (in the case of a browser the charset specified in the http headers).

что указывает на то, что при правильной кодировке в базе данных все будет нормально, но у меня есть сомнения... Прошу знающих высказаться :)
Аватара пользователя
Carbofos
phpBB 2.0.2
 
Сообщения: 158
Зарегистрирован: 04.03.2005 20:30

Сообщение Carbofos 01.07.2006 14:22

Код вроде работает как надо... переименовал тему в BETA.
Жаль, что Левенштейна прикрутить к моду пока разумной возможности нет...

Добавлено спустя 17 минут 7 секунд:

Но надежды я пока не оставляю :)

Добавлено спустя 25 минут 48 секунд:

Нет, похоже, без встроенных функций не обойтись... иначе только вытаскивать из базы все ники и проводить сравнение :(
Аватара пользователя
Carbofos
phpBB 2.0.2
 
Сообщения: 158
Зарегистрирован: 04.03.2005 20:30

Сообщение natali 03.07.2006 12:55

а с уже зарегеными оно будет что-то делать?
Аватара пользователя
natali
phpBB 2.0.8
 
Сообщения: 329
Зарегистрирован: 30.05.2005 12:18
Откуда: Киев

Сообщение Siava 03.07.2006 13:46

natali, насколько я понял:
Carbofos писал(а):Принцип установки следующий:

- закрываем форум в админке, чтобы ничто не мешало (из админки не выходим)

- устанавливаем мод

- заходим в общие настройки форума и нажимаем кнопку, где "Переиндексировать имена пользователей" - для этого и выключали форум (впрочем, как оказалось, он это делает не очень медленно)

- после того, как пересчет закончится, включаем форум и заодно "Дополнительную проверку имен" (рядом с кнопкой).


Carbofos, мод обязательно потестирую и отпишусь о результатах! :)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение natali 03.07.2006 13:56

так а что оно предлагает пользователю Вася_?
Аватара пользователя
natali
phpBB 2.0.8
 
Сообщения: 329
Зарегистрирован: 30.05.2005 12:18
Откуда: Киев

Сообщение Siava 03.07.2006 14:39

natali
Если уже есть пользователь Вася, то не даст зарегать Вася_
Проверил, мод отлично работает (на первый взгляд) :) Carbofos, респект :)
Правда тестил на .19 версии (лень было тестовый форум на локалхосте обновлять), наверно из-за этого в board_config_body.tpl не нашлось кое-что из инструкции, но это не было препятствием для тестирования :)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Carbofos 03.07.2006 20:57

Siava писал(а):в board_config_body.tpl не нашлось кое-что из инструкции

Изя-модом имхо вообще нельзя ничего в темплейтах искать, имхо...
Но это скорее всего у меня косяк. Что это было, не помнишь?

natali
Схема работы тоже приведена, в картинках :)

Добавлено спустя 3 часа 48 минут 37 секунд:

Оказалось, забыл вставить обновления поля user_cleanname, когда переименовываешь юзера в админке. Исправил, залил новую версию.

Только изменения:
Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
admin/admin_users.php
#
#-----[ FIND ]------------------------------------------
#
$username_sql = "username = '"
#
#-----[ IN-LINE FIND ]----------------------------------
#
$username) . "',
#
#-----[ IN-LINE AFTER, ADD ]----------------------------
#
user_cleanname = '" . normalize_username($username) . "',
Аватара пользователя
Carbofos
phpBB 2.0.2
 
Сообщения: 158
Зарегистрирован: 04.03.2005 20:30

Сообщение Siava 06.07.2006 17:32

Carbofos

Код: Выделить всё
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/admin/board_config_body.tpl

..........

#
#-----[ FIND ]------------------------------------------
#
  <tr>
    <td class="row1">{L_REGISTRATION_STATUS}<br /><span class="gensmall">{L_REGISTRATION_STATUS_EXPLAIN}</span></td>
#

Вот с этой инструкцией возникают проблемы, так как не найти в файле строчки L_REGISTRATION_STATUS.
После установки в конфигурации в админке кнопка переиндексации не подписана (она пустая), но функциональность мода вроде без ошибок :)
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение natali 06.07.2006 18:28

вопрос в другом....

если УЖЕ есть Вася и Вася+ и Вася_

какое из них "главнее" и что оно предложит двум другим?
Аватара пользователя
natali
phpBB 2.0.8
 
Сообщения: 329
Зарегистрирован: 30.05.2005 12:18
Откуда: Киев

Сообщение Siava 07.07.2006 0:33

natali
Ничего не будет с ними, ники так и останутся, но больше не даст зарегать похожих Вась.
Генератор db_update-файлов для phpBB 2.0
Еще одно нарушение правил и будете забанены.
© Mr. Anderson
Аватара пользователя
Siava
phpBB 3.0.2
 
Сообщения: 2718
Зарегистрирован: 11.01.2005 15:29
Откуда: Питер

Сообщение Carbofos 07.07.2006 15:48

Siava писал(а):кнопка переиндексации не подписана (она пустая), но

Странно, там должна вставляться $lang['Go'] из lang_main-a, он должен быть в админке виден...

С темплейтом все понятно, сейчас исправлю.

Добавлено спустя 7 минут 52 секунды:

пофиксил...

natali
Не только Вася, но и ВАСя, BACя, \+_++ВаСя-_-_--, ВасЯ и т.п. иными словами, символы заштрихованные серым цветом на схеме не считаются действительными, в смысле придания отличия нику от существующих.
Аватара пользователя
Carbofos
phpBB 2.0.2
 
Сообщения: 158
Зарегистрирован: 04.03.2005 20:30

Сообщение natali 07.07.2006 15:50

название темы поправь )))
Аватара пользователя
natali
phpBB 2.0.8
 
Сообщения: 329
Зарегистрирован: 30.05.2005 12:18
Откуда: Киев

След.

Вернуться в Бета-версии модов для phpBB 2.0.x

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0