Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

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

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Стаж: 19 лет 1 месяц

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

Сообщение Carbofos »

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

Схема работы такова:
Модифицируется таблица 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, в самом моде ничего нового.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Carbofos 07.07.2006 17:04, всего редактировалось 10 раз.
Аватара пользователя
ETZel
phpBB 1.4.3
Сообщения: 93
Стаж: 18 лет 3 месяца
Откуда: Челябинск

Сообщение ETZel »

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

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

Как опцию (спорную) можно добавить идентичность транслитерированных имен: clean('vasya') == clean('вася')
Аватара пользователя
ptzChanger
phpBB 1.4.3
Сообщения: 81
Стаж: 18 лет 5 месяцев

Сообщение ptzChanger »

идея хорошая ... мод нужный ... у меня на форуме уже была драка из-за ника ...
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Стаж: 19 лет 1 месяц

Сообщение Carbofos »

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 1.4.4
Сообщения: 158
Стаж: 19 лет 1 месяц

Сообщение Carbofos »

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

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

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

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

Нет, похоже, без встроенных функций не обойтись... иначе только вытаскивать из базы все ники и проводить сравнение :(
Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 18 лет 10 месяцев
Откуда: Киев

Сообщение natali »

а с уже зарегеными оно будет что-то делать?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

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

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

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

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

- после того, как пересчет закончится, включаем форум и заодно "Дополнительную проверку имен" (рядом с кнопкой).
Carbofos, мод обязательно потестирую и отпишусь о результатах! :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 18 лет 10 месяцев
Откуда: Киев

Сообщение natali »

так а что оно предлагает пользователю Вася_?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

natali
Если уже есть пользователь Вася, то не даст зарегать Вася_
Проверил, мод отлично работает (на первый взгляд) :) Carbofos, респект :)
Правда тестил на .19 версии (лень было тестовый форум на локалхосте обновлять), наверно из-за этого в board_config_body.tpl не нашлось кое-что из инструкции, но это не было препятствием для тестирования :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Стаж: 19 лет 1 месяц

Сообщение Carbofos »

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) . "',
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

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.
После установки в конфигурации в админке кнопка переиндексации не подписана (она пустая), но функциональность мода вроде без ошибок :)
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 18 лет 10 месяцев
Откуда: Киев

Сообщение natali »

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

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

какое из них "главнее" и что оно предложит двум другим?
Аватара пользователя
Siava
Поддержка
Поддержка
Сообщения: 5280
Стаж: 19 лет 3 месяца
Откуда: Питер
Благодарил (а): 186 раз
Поблагодарили: 791 раз

Сообщение Siava »

natali
Ничего не будет с ними, ники так и останутся, но больше не даст зарегать похожих Вась.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb 2.0.x 3.5.x)
Аватара пользователя
Carbofos
phpBB 1.4.4
Сообщения: 158
Стаж: 19 лет 1 месяц

Сообщение Carbofos »

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

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

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

пофиксил...

natali
Не только Вася, но и ВАСя, BACя, \+_++ВаСя-_-_--, ВасЯ и т.п. иными словами, символы заштрихованные серым цветом на схеме не считаются действительными, в смысле придания отличия нику от существующих.
Аватара пользователя
natali
phpBB 2.0.1
Сообщения: 293
Стаж: 18 лет 10 месяцев
Откуда: Киев

Сообщение natali »

название темы поправь )))

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