Избавляемся от спама в обратной связи
Хак позволит избавиться от спама, рассылаемого через форму обратной связи в Dle. Расписывать много не буду , а в кратце опишу общее направление. Кому-то этого хватит, а кого-то может натолкнет написать полноценный модуль анти-спама.
Установка:
1. Регистрируемся на сервисе Akismet и получаем API ключ, который по сути бесплатный. Нас лишь просят оказать им финансовую, помощь размер которой устанавливаем мы сами, а это может быть и 0.
2. Дальше скачиваем библиотеку. Из неё нам пригодиться один файл Akismet.class.php, который находится по такому пути:
achingbrain-php5-akismet-0ded6a3.zip\achingbrain-php5-akismet-0ded6a3\src\main\php\net\achingbrain\Akismet.class.php
Где значение 0ded6a3 может быть любым другим. Копируем файл Akismet.class.php в папку движка /engine/classes/.
3. Открываем /engine/modules/feedback.php и сразу после:
if( ! defined( 'DATALIFEENGINE' ) ) {
die( "Hacking attempt!" );
}
Вставляем:
require_once ENGINE_DIR . '/classes/Akismet.class.php';
4. Ищем, где у нас проходят валидацию POST запросы:
$subject = strip_tags( stripslashes( $_POST['subject'] ) );
$message = stripslashes( $_POST['message'] );
$recip = intval( $_POST['recip'] );
После этого вставляем:
$WordPressAPIKey = 'api-key';
$MyBlogURL = 'http://sait.ru/';
$akismet = new Akismet($MyBlogURL ,$WordPressAPIKey);
$akismet->setCommentAuthor($name);
$akismet->setCommentAuthorEmail($email);
$akismet->setCommentAuthorURL($subject);
$akismet->setCommentContent($message);
$akismet->setPermalink('http://sait.ru/');
if($akismet->isCommentSpam()){
echo 'Akismet detected spam! Die fucking bot!';
header("HTTP/1.1 804 Spam Detected");
header ("location: http://sait.ru/");
die();
}else{
$message= $message;
}
Обращаем внимание на пометки api-key и sait.
Готово!
Для проверки работы хака, отлавливает спам или нет, можно вставить вместо:
echo 'Akismet detected spam! Die fucking bot!';
header("HTTP/1.1 804 Spam Detected");
header ("location: http://sait.ru/");
die();
Cтроку:
$message= "Это сообщение спам! - ". $message;
Тогда сообщение содержащее спам не будет блокироваться, а будет приходить с пометкой - Это сообщение спам!
Соответственно по тому же принципу можно избавится от спама комментариев и тд и тп.
Версия DLE: 9.x
Комментариев 0