Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.
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 1.4.4
- Сообщения: 158
- Стаж: 19 лет 1 месяц
[BETA] Анти-клон 0.1.3
Т.к. никто так и не решил сделать мод для публики по борьбе с клонами пользователей, попробую я.
Название условное, просто ничего не пришло в голову, предлагайте свои варианты
Схема работы такова:
Модифицируется таблица 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, в самом моде ничего нового.
Название условное, просто ничего не пришло в голову, предлагайте свои варианты
Схема работы такова:
Модифицируется таблица 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 раз.
-
- phpBB 1.4.3
- Сообщения: 93
- Стаж: 18 лет 3 месяца
- Откуда: Челябинск
Хорошо бы это сразу распространить на европу, не завязываясь на cp1251 (для каждой поддерживаемой кодировки составить свою таблицу, хотя бы для latin1/latin2)
И на cp1251_general_ci лучше не завязываться, а сразу сохранять user_cleanname в такой форме, чтобы для похожих имен поля были бинарно идентичны.
Символы, обозначенные серым цветом на второй картинке, на любом приличном форуме должны быть попросту запрещены (ИМХО).
Для полноты мода можно добавить и ограничения на длину и допустимые символы (правда, такой ограничитель в бете есть на phpbb.com)
Как опцию (спорную) можно добавить идентичность транслитерированных имен: clean('vasya') == clean('вася')
И на cp1251_general_ci лучше не завязываться, а сразу сохранять user_cleanname в такой форме, чтобы для похожих имен поля были бинарно идентичны.
Символы, обозначенные серым цветом на второй картинке, на любом приличном форуме должны быть попросту запрещены (ИМХО).
Для полноты мода можно добавить и ограничения на длину и допустимые символы (правда, такой ограничитель в бете есть на phpbb.com)
Как опцию (спорную) можно добавить идентичность транслитерированных имен: clean('vasya') == clean('вася')
-
- phpBB 1.4.3
- Сообщения: 81
- Стаж: 18 лет 5 месяцев
идея хорошая ... мод нужный ... у меня на форуме уже была драка из-за ника ...
Карелия http://www.kareliahotel.ru
-
- phpBB 1.4.4
- Сообщения: 158
- Стаж: 19 лет 1 месяц
ETZel
Для мира пишущего латиницей, имхо, мод далеко не так востребован, как у нас, но я могу и ошибаться.
Может тогда сделать поле BINARY? Но тогда могут возникнуть непонятки с кодировкой, т.к. буквы расширенной латиницы совпадают с буквами кириллицы и в интернациональных форумах (или просто где кому-то придет в голову зарегить ник с одним из таких символов) может возникнуть путаница.
В случаях же, если поле текстовое, с заданной кодировкой сравнения, скажем, буква ö сохраниться в виде &какой-то-номер; (в случае кириллицы)
Покрывать же таблицей юникод - даже как-то страшно подумать об этом
Все зависит от того, нужен ли этот мод "буржуям". В крайнем случае, нужно будет заменить только таблицы, кодировка "сработает" автоматически, т.к. там вряд ли используется кириллица.
Собственно, вся оговорка состоит в том, что соблюсти кодировку нужно лишь для того, чтобы в поле могли без проблем записаться символы кириллицы (ну и последующего их сравнения).
Добавлено спустя 1 час 23 минуты 58 секунд:
Нужен совет: т.к. в preg_replace в качестве аргумента replace нужно писать конкретные знаки, то как это лучше сделать, учитывая, что некоторые из них будут русскими?
Если я сделаю русскую букву типа chr(...), не будет ли это потенциальным источником проблем при использовании в полевых условиях? Хотя я и прочитал назидание:
Для мира пишущего латиницей, имхо, мод далеко не так востребован, как у нас, но я могу и ошибаться.
Может тогда сделать поле 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).
-
- phpBB 1.4.4
- Сообщения: 158
- Стаж: 19 лет 1 месяц
Код вроде работает как надо... переименовал тему в BETA.
Жаль, что Левенштейна прикрутить к моду пока разумной возможности нет...
Добавлено спустя 17 минут 7 секунд:
Но надежды я пока не оставляю
Добавлено спустя 25 минут 48 секунд:
Нет, похоже, без встроенных функций не обойтись... иначе только вытаскивать из базы все ники и проводить сравнение
Жаль, что Левенштейна прикрутить к моду пока разумной возможности нет...
Добавлено спустя 17 минут 7 секунд:
Но надежды я пока не оставляю
Добавлено спустя 25 минут 48 секунд:
Нет, похоже, без встроенных функций не обойтись... иначе только вытаскивать из базы все ники и проводить сравнение
-
- phpBB 2.0.1
- Сообщения: 293
- Стаж: 18 лет 10 месяцев
- Откуда: Киев
-
- Поддержка
- Сообщения: 5282
- Стаж: 19 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 186 раз
- Поблагодарили: 793 раза
natali, насколько я понял:
Carbofos, мод обязательно потестирую и отпишусь о результатах!Carbofos писал(а):Принцип установки следующий:
- закрываем форум в админке, чтобы ничто не мешало (из админки не выходим)
- устанавливаем мод
- заходим в общие настройки форума и нажимаем кнопку, где "Переиндексировать имена пользователей" - для этого и выключали форум (впрочем, как оказалось, он это делает не очень медленно)
- после того, как пересчет закончится, включаем форум и заодно "Дополнительную проверку имен" (рядом с кнопкой).
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.1
- Сообщения: 293
- Стаж: 18 лет 10 месяцев
- Откуда: Киев
-
- Поддержка
- Сообщения: 5282
- Стаж: 19 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 186 раз
- Поблагодарили: 793 раза
natali
Если уже есть пользователь Вася, то не даст зарегать Вася_
Проверил, мод отлично работает (на первый взгляд) Carbofos, респект
Правда тестил на .19 версии (лень было тестовый форум на локалхосте обновлять), наверно из-за этого в board_config_body.tpl не нашлось кое-что из инструкции, но это не было препятствием для тестирования
Если уже есть пользователь Вася, то не даст зарегать Вася_
Проверил, мод отлично работает (на первый взгляд) Carbofos, респект
Правда тестил на .19 версии (лень было тестовый форум на локалхосте обновлять), наверно из-за этого в board_config_body.tpl не нашлось кое-что из инструкции, но это не было препятствием для тестирования
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 1.4.4
- Сообщения: 158
- Стаж: 19 лет 1 месяц
Изя-модом имхо вообще нельзя ничего в темплейтах искать, имхо...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) . "',
-
- Поддержка
- Сообщения: 5282
- Стаж: 19 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 186 раз
- Поблагодарили: 793 раза
Carbofos
Вот с этой инструкцией возникают проблемы, так как не найти в файле строчки L_REGISTRATION_STATUS.
После установки в конфигурации в админке кнопка переиндексации не подписана (она пустая), но функциональность мода вроде без ошибок
Код: Выделить всё
#
#-----[ 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>
#
После установки в конфигурации в админке кнопка переиндексации не подписана (она пустая), но функциональность мода вроде без ошибок
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 2.0.1
- Сообщения: 293
- Стаж: 18 лет 10 месяцев
- Откуда: Киев
-
- Поддержка
- Сообщения: 5282
- Стаж: 19 лет 3 месяца
- Откуда: Питер
- Благодарил (а): 186 раз
- Поблагодарили: 793 раза
natali
Ничего не будет с ними, ники так и останутся, но больше не даст зарегать похожих Вась.
Ничего не будет с ними, ники так и останутся, но больше не даст зарегать похожих Вась.
Еще одно нарушение правил и будете забанены. © Mr. Anderson
Ты очистил кеш? © Sheer
https://siava.ru (phpbb2.0.x 3.5.x)
Ты очистил кеш? © Sheer
https://siava.ru (phpbb
-
- phpBB 1.4.4
- Сообщения: 158
- Стаж: 19 лет 1 месяц
Странно, там должна вставляться $lang['Go'] из lang_main-a, он должен быть в админке виден...Siava писал(а):кнопка переиндексации не подписана (она пустая), но
С темплейтом все понятно, сейчас исправлю.
Добавлено спустя 7 минут 52 секунды:
пофиксил...
natali
Не только Вася, но и ВАСя, BACя, \+_++ВаСя-_-_--, ВасЯ и т.п. иными словами, символы заштрихованные серым цветом на схеме не считаются действительными, в смысле придания отличия нику от существующих.
-
- phpBB 2.0.1
- Сообщения: 293
- Стаж: 18 лет 10 месяцев
- Откуда: Киев