Не так давно на сайт обрушилось огромное количество спама. Видимо попал в какую-то базу спамеров. Собственными средствами K2 победить не удалось, да и особо правил и запретов в нём нет. Никакая из версий Google Captcha не спасала. Спам проходил на ура. При чём это были скриптовые запросы, потому что у меня поля e-mail и адрес сайта скрыты для ввода, а в базу такой спам попадал с введёнными данными.
Идеально для меня было бы сделать спам-лист (стоп-лист) слов. Чтобы если такие слова содержались в тексте комментария, то они бы просто не опубликовывались. Стал искать способ и наткнулся на интересное решение, добавить в php проверку на эти слова. Правда это решение было для JComments. Попробовал расширение, мне оно понравилось, почему бы не использовать?
- Устанавливаем плагин JComments.
- Настраиваем его и подключаем к K2.
- Импортируем комментарии из K2.
- Идём в файл /components/jcomments/jcomments.php
- Находим строки:
if (isset($_REQUEST['jtxf'])) {
$mystring = JRequest::getVar('comment', '', 'post', 'string'); - Исправляем весь блок на:
if (isset($_REQUEST['jtxf'])) {
$mystring = JRequest::getVar('comment', '', 'post', 'string');
if (preg_match("/(СТОП СЛОВО 1|СТОП СЛОВО 2)/i", $mystring)) {echo "OK"; exit;}
require_once (JCOMMENTS_BASE.'/jcomments.ajax.php'); - Вместо фраз "СТОП СЛОВО" указываем необходимые вам.
- Через "|" вписываем стоп слова или даже фразы.
- Проверяем.
- Отключаем Google Captcha.
- Настраиваем отображение формы под ваш шаблон.
Таким образом при вводе этих слов форма не отправит запрос на сервер и тем самым не добавит комментарий в базу. Можно было бы сделать вывод сообщения о том, что ваше слово попало в стоп-лист и попросить исправить сообщение. Но обычный человек вряд ли попадёт в него, если грамотно составить список, а не блокировать всё подряд.
После этого можно смело отключить каптчу и настроить отображение комментариев под ваш шаблон. Недели две у меня ушло на создание такого списка, но теперь я полностью доволен результатом. Можете для проверки как это работает попробовать ввести такие слова как "cialis", "avodart", "prozac" в поле комментария у меня на сайте.
Для удобства на первое время лучше поставить модерацию сообщений и когда появляется время пройтись по спаму и выбрать из них слова. А после уже и отключить модерацию вовсе.