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.

Читайте также

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

DLE — быстрый переезд на хостинг не используя инсталятор
Установка движка DLE на хостинг происходит через специальный файл — инсталятор, в котором необходимо заполнить все поля (имя базы данных,...
DLE — монетизируем загруженные в новостях файлы через отдельный домен
Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать!...
DLE — мой первый модуль, как написать свой модуль Datalife Engine
Как ни пытался уйти с DLE из-за того, что он платный, а на рынке существует куча бесплатных аналогов, не получается...
DLE на HTTPS — основные проблемы и их решение
Столкнулся с рядом проблем, когда наконец-то решился перебраться на https. Не появлялись некоторые картинки, видео, а в адресной строке писалось,...
DLE — Модуль форума SimpleBB 1.1
Полноценный форум с единой регистрацией и авторизацией, единым акаунтом и ссылками на профиль от dle \»user/username/\» на движке SimpleBB 1.1...

Комментарии

  1. @devarts пишет:
    26.09.2013 в 01:50

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

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

  2. @Лена пишет:
    24.09.2013 в 20:57

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

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *