Stop Forum Spam и гостевой раздел в phpBB 3.3

Ответить
Аватара пользователя
Sego
Site Admin
Сообщения: 400
Зарегистрирован: июл 29, '26, 05:37
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Stop Forum Spam и гостевой раздел в phpBB 3.3

Сообщение: # 1219Сообщение Sego »

Stop Forum Spam и гостевой раздел в phpBB 3.3

Небольшой конспект по созданию раздела, в котором незарегистрированные посетители могут создавать темы и отвечать на сообщения, а также по подключению проверки через базу Stop Forum Spam.

1. Для чего нужен Stop Forum Spam

Расширение проверяет имя, адрес электронной почты и IP посетителя по базе известных спамеров Stop Forum Spam.

Официальная страница расширения:
Stop Forum Spam для phpBB

Папка расширения после распаковки должна находиться здесь:

Код: Выделить всё

ext/rmcgirr83/stopforumspam/
После загрузки расширение включается в ACP:

Код: Выделить всё

Персонализация → Управление расширениями
2. Рекомендуемые настройки

В настройках Stop Forum Spam установлено:

Код: Выделить всё

Enable Stop Forum Spam: Да
Check against user name: Да
Check against email: Да
Check against IP: Да
Stop Forum Spam threshold: 3
Ban User: Нет
Display reason if banned: Да
Log a message: Да
Allow if Stop Forum Spam is down: Да
Allow reporting of PMs: Нет
Board Notification: Нет
API-ключ для обычной проверки регистраций и сообщений не требуется. Он нужен только для отправки собственных жалоб в базу Stop Forum Spam.

Параметр Allow if Stop Forum Spam is down лучше оставить включённым. Если внешний сервис временно не отвечает, форум не будет блокировать нормальную регистрацию или отправку сообщения.

3. Создание форума для гостей

Создаём обычный форум и назначаем права:

• группе Гости — видеть, читать, создавать темы и отвечать;
• администраторам — полный доступ;
• зарегистрированным пользователям — запретить просмотр, если раздел должен быть виден только гостям и администрации.

На перенесённых или ранее изменённых форумах желательно дополнительно проверить права встроенной учётной записи Anonymous. Именно под ней phpBB работает с любым незарегистрированным посетителем.

Для гостя в нижней части страницы форума должно быть указано:

Код: Выделить всё

Вы можете начинать темы
Вы можете отвечать на сообщения
Отсутствие формы быстрого ответа для гостя — нормальное поведение. При нажатии «Ответить» phpBB открывает полную форму, поскольку гостю необходимо ввести имя, email и CAPTCHA.

4. Ошибка расширения при гостевом ответе

В версии расширения, использованной на форуме, обнаружилась несовместимость с гостевыми ответами.

При отправке ответа появлялись предупреждения:

Код: Выделить всё

Undefined array key “email”
Undefined array key “user_ip”
Invalid IP address
Причина находилась в файле:

Код: Выделить всё

ext/rmcgirr83/stopforumspam/event/main_listener.php
Расширение добавляло email, имя и IP в данные сообщения только при создании новой темы — режим post. При обычном ответе использовался режим reply, поэтому нужные данные отсутствовали.

В функции:

Код: Выделить всё

poster_modify_message_text($event)
исходная строка:

Код: Выделить всё

if ($event[‘mode’] == ‘post’ && $this->user->data[‘user_id’] == ANONYMOUS && $this->config[‘allow_sfs’])
была заменена на:

Код: Выделить всё

if ($this->user->data[‘user_id’] == ANONYMOUS && $this->config[‘allow_sfs’])
Теперь расширение получает необходимые данные не только при создании темы, но и при гостевом ответе.

5. Кириллица в имени гостя превращалась в вопросительные знаки

После первой правки гостевые ответы начали проходить проверку, но имя, введённое кириллицей, сохранялось как:

Код: Выделить всё

????????
Причина — расширение получало имя без разрешения многобайтовых символов.

Примерно на строке 226 исходная строка:

Код: Выделить всё

‘username’ => strtolower($this->request->variable(‘username’, ‘’)),
была заменена на:

Код: Выделить всё

‘username’ => $this->request->variable(‘username’, ‘’, true),
Третий параметр true разрешает обработку Unicode, включая кириллицу.

6. Что сделать после изменения файла

После правки необходимо очистить кэш phpBB:

Код: Выделить всё

ACP → Общие → Очистить кэш
Затем проверить от имени гостя:

1. Создание новой темы.
2. Ответ в существующей теме.
3. Имя латиницей.
4. Имя кириллицей.
5. Работу CAPTCHA.
6. Отсутствие предупреждений PHP и ошибки Invalid IP address.

Важно

Перед редактированием следует сохранить копию исходного файла main_listener.php.

При обновлении расширения изменённый файл может быть заменён оригинальным. Поэтому эти две правки нужно сохранить отдельно и после обновления проверить повторно.
Ответить