Stop Forum Spam и гостевой раздел в phpBB 3.3
Добавлено: авг 10, '26, 09:17
Stop Forum Spam и гостевой раздел в phpBB 3.3
Небольшой конспект по созданию раздела, в котором незарегистрированные посетители могут создавать темы и отвечать на сообщения, а также по подключению проверки через базу Stop Forum Spam.
1. Для чего нужен Stop Forum Spam
Расширение проверяет имя, адрес электронной почты и IP посетителя по базе известных спамеров Stop Forum Spam.
Официальная страница расширения:
Stop Forum Spam для phpBB
Папка расширения после распаковки должна находиться здесь:
После загрузки расширение включается в ACP:
2. Рекомендуемые настройки
В настройках Stop Forum Spam установлено:
API-ключ для обычной проверки регистраций и сообщений не требуется. Он нужен только для отправки собственных жалоб в базу Stop Forum Spam.
Параметр Allow if Stop Forum Spam is down лучше оставить включённым. Если внешний сервис временно не отвечает, форум не будет блокировать нормальную регистрацию или отправку сообщения.
3. Создание форума для гостей
Создаём обычный форум и назначаем права:
• группе Гости — видеть, читать, создавать темы и отвечать;
• администраторам — полный доступ;
• зарегистрированным пользователям — запретить просмотр, если раздел должен быть виден только гостям и администрации.
На перенесённых или ранее изменённых форумах желательно дополнительно проверить права встроенной учётной записи Anonymous. Именно под ней phpBB работает с любым незарегистрированным посетителем.
Для гостя в нижней части страницы форума должно быть указано:
Отсутствие формы быстрого ответа для гостя — нормальное поведение. При нажатии «Ответить» phpBB открывает полную форму, поскольку гостю необходимо ввести имя, email и CAPTCHA.
4. Ошибка расширения при гостевом ответе
В версии расширения, использованной на форуме, обнаружилась несовместимость с гостевыми ответами.
При отправке ответа появлялись предупреждения:
Причина находилась в файле:
Расширение добавляло email, имя и IP в данные сообщения только при создании новой темы — режим post. При обычном ответе использовался режим reply, поэтому нужные данные отсутствовали.
В функции:
исходная строка:
была заменена на:
Теперь расширение получает необходимые данные не только при создании темы, но и при гостевом ответе.
5. Кириллица в имени гостя превращалась в вопросительные знаки
После первой правки гостевые ответы начали проходить проверку, но имя, введённое кириллицей, сохранялось как:
Причина — расширение получало имя без разрешения многобайтовых символов.
Примерно на строке 226 исходная строка:
была заменена на:
Третий параметр true разрешает обработку Unicode, включая кириллицу.
6. Что сделать после изменения файла
После правки необходимо очистить кэш phpBB:
Затем проверить от имени гостя:
1. Создание новой темы.
2. Ответ в существующей теме.
3. Имя латиницей.
4. Имя кириллицей.
5. Работу CAPTCHA.
6. Отсутствие предупреждений PHP и ошибки Invalid IP address.
Важно
Перед редактированием следует сохранить копию исходного файла main_listener.php.
При обновлении расширения изменённый файл может быть заменён оригинальным. Поэтому эти две правки нужно сохранить отдельно и после обновления проверить повторно.
Небольшой конспект по созданию раздела, в котором незарегистрированные посетители могут создавать темы и отвечать на сообщения, а также по подключению проверки через базу Stop Forum Spam.
1. Для чего нужен Stop Forum Spam
Расширение проверяет имя, адрес электронной почты и IP посетителя по базе известных спамеров Stop Forum Spam.
Официальная страница расширения:
Stop Forum Spam для phpBB
Папка расширения после распаковки должна находиться здесь:
Код: Выделить всё
ext/rmcgirr83/stopforumspam/Код: Выделить всё
Персонализация → Управление расширениямиВ настройках 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: Нет
Параметр Allow if Stop Forum Spam is down лучше оставить включённым. Если внешний сервис временно не отвечает, форум не будет блокировать нормальную регистрацию или отправку сообщения.
3. Создание форума для гостей
Создаём обычный форум и назначаем права:
• группе Гости — видеть, читать, создавать темы и отвечать;
• администраторам — полный доступ;
• зарегистрированным пользователям — запретить просмотр, если раздел должен быть виден только гостям и администрации.
На перенесённых или ранее изменённых форумах желательно дополнительно проверить права встроенной учётной записи Anonymous. Именно под ней phpBB работает с любым незарегистрированным посетителем.
Для гостя в нижней части страницы форума должно быть указано:
Код: Выделить всё
Вы можете начинать темы
Вы можете отвечать на сообщения
4. Ошибка расширения при гостевом ответе
В версии расширения, использованной на форуме, обнаружилась несовместимость с гостевыми ответами.
При отправке ответа появлялись предупреждения:
Код: Выделить всё
Undefined array key “email”
Undefined array key “user_ip”
Invalid IP address
Код: Выделить всё
ext/rmcgirr83/stopforumspam/event/main_listener.phpВ функции:
Код: Выделить всё
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),
6. Что сделать после изменения файла
После правки необходимо очистить кэш phpBB:
Код: Выделить всё
ACP → Общие → Очистить кэш1. Создание новой темы.
2. Ответ в существующей теме.
3. Имя латиницей.
4. Имя кириллицей.
5. Работу CAPTCHA.
6. Отсутствие предупреждений PHP и ошибки Invalid IP address.
Важно
Перед редактированием следует сохранить копию исходного файла main_listener.php.
При обновлении расширения изменённый файл может быть заменён оригинальным. Поэтому эти две правки нужно сохранить отдельно и после обновления проверить повторно.