Защита 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 |
КОНТАКТЫ
г. Екатеринбург info@vismech.ru |
текущее: НОВОСТИ 05.12.2013 - Уход за флэш-накопителем 05.12.2013 - Компьютер самопроизвольно выключается 05.12.2013 - Почему не запускается компьютер? 27.11.2013 - Canon Legria HF R406 - Описание видеокамеры 27.11.2013 - TravelMate P645 новый лэптоп бизнес-класса от Acer |