DLE – Избавляемся от спама в комментариях

comments url antispam - DLE - Избавляемся от спама в комментариях

Последнее время DLE подвергается массовым спам атакам. Это и регистрация ботов, и спам в комментариях. Каптча уже не помогает, спам программы становятся все более продвинутыми и легко считывают каптчи. Самый простой способ — просто поставить запрет на ссылки.

Как бороться с ботами описано тут, а со спамом в комментариях мы разберемся ниже.

Запрет на публикование ссылок в комментариях

Открываем engine/modules/addcomments.php и находим такой текст на 130+ строке

if( dle_strlen( $name, $config['charset'] ) > 20 ) {
    $stop[] = $lang['news_err_1'];
    $CN_HALT = TRUE;

Ниже добавляем:

//antispamer
if (preg_match ("/href|url|http|www|.ru|.com|.net|.info|.org/i", $_POST['comments']) || preg_match ("/href|url|http|www|.ru|.com|.net|.info|.org/i", $_POST['name']))
{
$stop[] = "URL адреса сайтов в комментариях публиковать ЗАПРЕЩЕНО!";
$CN_HALT = TRUE;
}
//end of antispam

Настройка параметров

preg_match ("/href|url|http|www|.ru|.com|.net|.info|.org/i", $_POST['comments']
preg_match ("/href|url|http|www|.ru|.com|.net|.info|.org/i", $_POST['name']

Две строки выше, если описывать дословно, делают следующее: если в поле для комментариев или для имени комментатора находится данный текст, а именно — href|url|http|www|.ru|.com|.net|.info|.org, то выводить следующий текст ошибки:

$stop[] = "URL адреса сайтов в комментариях публиковать ЗАПРЕЩЕНО!";

Запрет комментирования с отключенным JavaScript

Отключенный JavaScript с высокой вероятностью указывает на то, что попытка оставить комментарий осуществляется из стороннего программного обеспечения и крайне редко — он действительно выключен в браузере

comments off js antispam - DLE - Избавляемся от спама в комментариях

Добавить код ниже туда же, где добавляли код из примера выше, под него или над ним

if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) && empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {
$stop[] = 'У вас отключен javascript или комментарий является спамом';
$CN_HALT = TRUE;
}

Автор: rocksmart

С решением выше может возникнуть проблема, т.к. не каждый сервер умеет определять наличие JavaScript.

Похожие записи


PHP — простой ротатор баннеров, ротатор для DLE и WordPress
Аналог на javascriptАналог на PHP для больших кодов Очень простой ротатор кода на PHP. Сначала мы объявляем простой двумерный массив...
Как изменить пароль пользователя CMS DLE и WordPress через SQL-запрос
Перебираю старые статьи с целью их оптимизации и наткнулся на эту. В принципе, способ подойдет для любой системы на любом...
Полный гайд по миграции с CMS DLE на WordPress
Данный сайт в апреле 2019 года полностью переехал на CMS WordPress и в июне, после завершения всех правок (а их...
DLE – быстрый переезд на хостинг не используя инсталятор
Установка движка DLE на хостинг происходит через специальный файл — инсталятор, в котором необходимо заполнить все поля (имя базы данных,...
DLE — монетизируем загруженные в новостях файлы через отдельный домен
Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать!...

Комментарии

  1. @Лена пишет:

    Хороший хак, спасибо. Вот если бы еще он пропускал ссылки на другие страницы ресурса (то есть, запрещал бы только исходящие ссылки), – цены б ему не было.

  2. @devarts пишет:

    Цитата: Лена
    Хороший хак, спасибо. Вот если бы еще он пропускал ссылки на другие страницы ресурса (то есть, запрещал бы только исходящие ссылки), – цены б ему не было.

    Вполне реально, чуть объемнее код будет. Правда моих знаний не хватит для такого кода(

Добавить комментарий