Разработка сайтов, создание сайтов
главная / DLE / Защита DLE 8.5-9.0 от вредоносного по, рассылающего спам.

Защита DLE 8.5-9.0 от вредоносного по, рассылающего спам.

Защита DLE 8.5-9.0 от вредоносного по, рассылающего спам.

Я довольно долгое время работаю с CMS DataLife Engine и много раз сталкивался с проблемой спама в комментариях. И пусть бы это был просто спам, я ничего против не имел бы против бессмысленных комментариев типа:
"Не зря гугл посоветовал ваш сайт"
"Классный пост. Очень интересно. Спасибо за статью." etc.
Но в основном оставляют комментарии со ссылками на свои (и не только свои) ГС. Как правило данные комментарии отправляются не человеком, а вредоносным программным обсечением, написанным злобными программистами.
И что самое плохое, каждое слово такого комментария является анкором ссылки. Меня это стало сильно раздражать и поэтому я стал искать решение проблемы, как избавится от спам-ссылок в комментариях DLE. И нашёл очень простое решение этой проблемы. Для этого есть простой хак, который запрещает добавлять комментарии со ссылками.

Хак называется антилинк для DLE 8.5 - 9.0

Установка:
Открываем файл enginemodulesaddcomments.php и находим там

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

Ниже добавляем этот код:
/*******************************************************************
Хак антилинк, защита от спама в комментариях DLE by terobait48
*******************************************************************/
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] Хак антилинк, защита от спама в комментариях DLE by terobait48
*******************************************************************/

А ещё лучше будет, если сам комментарий останется, а ссылка из него будет удалена. Для этого используйте следующий код:
$_POST['comments'] = preg_replace(«|[url.*?]|si»,»",$_POST['comments']);
$_POST['comments'] = preg_replace(«|[/url]|si»,»",$_POST['comments']);
$_POST['comments'] = preg_replace(«|<a.*>|si»,»",$_POST['comments']);
$_POST['comments'] = preg_replace(«|</a>|si»,»",$_POST['comments']);;

ставить его после:
if( dle_strlen( $name, $config['charset'] ) > 50 ) {
$stop[] = $lang['news_err_1'];
$CN_HALT = TRUE;
}



Источник: terobait48.ru
текущее:

НОВОСТИ

2011 г., «VisMech.ru»