Последнее время DLE подвергается массовым спам атакам. Это и регистрация ботов, и спам в комментариях. Каптча уже не помогает, спам программы становятся все более продвинутыми и легко считывают каптчи. Самый простой способ - просто поставить запрет на ссылки.
Как бороться с ботами описано
тут, а со спамом в комментариях мы разберемся ниже.
1. Запрет на публикование ссылок в комментариях
1.1 Открываем:
engine/modules/addcomments.php и находим такой текст на 130+ строке
if( dle_strlen( $name, $config['charset'] ) > 20 ) {
$stop[] = $lang['news_err_1'];
$CN_HALT = TRUE;
1.2 Ниже добавляем:
//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
1.3 Заменяем файлы и радуемся. Разбираем код. Две строки
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 адреса сайтов в комментариях публиковать ЗАПРЕЩЕНО!";
Можете отредактировать под себя текст, который будет выскакивать при спаме, а так же больше условий, для вывода блокировки
2. Запрет на публикацию комментариев с отключенным js
2.1 Добавить этот код ниже или выше пункта выше
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
С решением выше может возникнуть проблема, т.к. не каждый сервер умеет определять наличие js. Что нам дает блокировка js? А то, что не будет рассылки комментариев через софт.