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

Spamwords MOD

Ответы на вопросы, связанные с модами для phpBB 2.0.x, кроме относящихся к форуму Для авторов (phpBB 2.0.x).
Kingcat
phpBB 1.0.0
Сообщения: 3
Стаж: 17 лет 2 месяца

Spamwords MOD

Сообщение Kingcat »

Установил у себя Spamwords MOD.
http://www.phpbb.com/phpBB/viewtopic.php?t=354376
Этот мод не даёт запостить на форум сообщение, если оно содержит спамерские слова. Список слов задаётся в админке, можно использовать '*' для замены группы символов. Там же можно определить, что делать с сообщениями, содержащими спамерские слова.
Мод мне очень понравился. Но, к сожалению, к нему нет русских текстов. Но это ещё пол беды. Он прекрасно отлавливает английские слова и совершенно не хочет определять русский спам. Например, слова "sex", "porno" он вылавливает и определяет сообщение как спам, а аналогичные русские: "секс", "порно" - не хочет.
Мне кажется, что проблема в функции сheck_spam в файле spamwords.php в аргументах фаункции preg_match

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

if ($row = $db->sql_fetchrow($result))
  {
  do
    {
     if (preg_match('#\b(' . str_replace('\*', '\w*?', phpbb_preg_quote($row['spam_word'], '#')) . ')\b#i', $message) || preg_match('#\b(' . str_replace('\*', '\w*?', phpbb_preg_quote($row['spam_word'], '#')) . ')\b#i', $subject))
...
Я слабо рабираюсь в PHP, ещё хуже в PERL. Посмотрите, кто понимает, по-моему там с шаблоном (первый аргумент фунции) проблема.
Аватара пользователя
edgar
phpBB 2.0.13
Сообщения: 917
Стаж: 18 лет 8 месяцев
Откуда: с Луны свалил...

Сообщение edgar »

Не хочу вас расстраивать, но этот мод не защитит от спама. Кроме того, может навредить нормальному постингу.

Решать конечно вам, но советую заглянуть в мою подпись.

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

Вот, кстати пример спамерского сообщения, которое у меня раз 10 пытались безуспешно запостить
Бело-розовое чудо длится всего несколько дней, а иногда лишь несколько часов...
Успейте соприкоснуться с традицией любования цветами сакуры,
которую из поколения в поколение берегут японцы!
...
Какие тут спамерские слова надо запретить? :) А слово секс может и нормальный юзер использовать. И другие "спамерские слова" тоже. Посмотрите, даже на этом форуме через поиск слово секс найти можно, хотя тут совсем другая тематика :)
Kingcat
phpBB 1.0.0
Сообщения: 3
Стаж: 17 лет 2 месяца

Сообщение Kingcat »

У меня узкотехнический специализированный форум, где разрешён гостевой постинг. В нём не должны использоваться такие слова, как "секс" и "порно". Также хочу заметить, что мод не посылает пользователей, использующих в сообщении запрещённые слова, куда подальше, а выводит сообщение, что в нашем форуме использовать это слово не принято, замените его на другое. Всё очень корректно и, если не зарываться, запрещяя всё подряд, то вреда нормальному постингу от этого мода быть не должно. Поэтому в дополнение к другим способам защиты этот мод мог бы мне очень пригодиться, если корректно работал с русскими словами. Кстати, один из рекомендованных в Вашей подписи модов - Detector Bots - у меня стоит. Что касается приведённого Вами примера с "бело-розовым чудом", то мы все понимаем, что 100% защиты не существует.
И всё-таки мой первый пост больше адресовался программистам на PHP. Уж простите меня, если это будет оффтопик. Я полагал, что на этом форуме найдутся люди, которые или уже разбирались с этим модом, или смогут мне подсказать, как поправить код, чтобы этот мод работал с русскими словами.
В очень упрощённом виде:
$spam_word="порно*";
$message="один, два, три, порнография";
$pattern='#\b(' . str_replace('\*', '\w*?', $spam_word) . ')\b#i';
if(preg_match($pattern, $message))
echo "SPAM";
Приведённый выше код не cработает, а вот если убрать из шаблона \b\b, то сработает, но также сработает и на
$message="запорное устройство";
что абсолютно не приемлемо.
Как правильно здесь задать шаблон?
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 18 лет 11 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 3 раза

Сообщение Поручик »

Почитайте тему здесь может что накопаете.
Или поиск по автоцензор, проблема то похожая.
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Kingcat
phpBB 1.0.0
Сообщения: 3
Стаж: 17 лет 2 месяца

Сообщение Kingcat »

Спасибо, Поручик. Ваша ссылка натолкнула меня на мысль проверить, что за локали установлены на моём сервере Linux.
Команда
# locale -a | grep ^ru_RU
сказала, что у меня установлена локаль ru_RU.UTF-8, а локали ru_RU.CP1251 нет вовсе. Тогда я создал её командой
# localedef -i ru_RU -f CP1251 /usr/lib/locale/ru_RU.CP1251
Перед этим пришлось раззиповать файл /usr/shared/i18n/CP1251.gz
После рестарта апача наконец-то правильно заработала PHP-функция
setlocale(LC_CTYPE,"ru_RU.CP1251")
которая раньше (в отсутствии локали ru_RU.CP1251) молча устанавливала мне локаль по умолчанию, в моём случае ru_RU.UTF-8. Отсюда были все проблемы с функцией preg_match.
Приношу извинения всем, кому запудрил мозги. Это была проблема моего сервера, а не ошибка в коде мода.
А мод хороший. Я как смог перевёл его на русский, если будут желающие его попробывать, могу отдать русский вариант файла lang_spamwords_admin.php
Prometheus
phpBB 1.4.4
Сообщения: 183
Стаж: 17 лет 11 месяцев
Благодарил (а): 1 раз

Сообщение Prometheus »

Данный мод хорош для приучения пользователей не пользоваться определенными словами. Не от спам-ботов.

Вернуться в «Поддержка модов для phpBB 2.0.x»