Akismet — веб-сервис от создателей WordPress, анализирующий качество содержимого, отправляемого на веб-сайты. Сюда включаются: комментарии, сообщения, отправляемые через контакт-формы, блоги, сообщения на форумах и прочее.
Простыми словами: человек пишет комментарий на вашем сайте, класс отсылает его для проверки на сервис Akismet, в результате вы получает от сервиса ответ — является ли спамом данный комментарий или нет.
Чтобы воспользоваться данным веб-сервисом, необходимо скачать Akismet класс (написан под РНР5) и получить WordPress API key (API-key не привязан ни к какому конкретному сайту, и вы сможете использовать там, где вам понадобиться)
Подключается он очень просто:
<?php
require_once 'config.php';
require_once 'functions.php';
require_once 'akismet.class.php';
// Получим данные(из GET, POST)
$wordpressAPI = 'Сюда_введите_ваш_API';
$name = getParam('name', null, 'text');
$email = getParam('name', null, 'text');
$url = getParam('url', null, 'text');
$comment = getParam('comment', null, 'text');
// Если заполнены обязательные поля
if ($name && $comment) {
// Инициализируем наш класс
$akismet = new Akismet('http://'.$_SERVER['SERVER_NAME'].'/', $wordpressAPI);
// Проверим API на валидность
if($akismet->isKeyValid()) {
// Установим переменные для проверки на веб-сервисе
$akismet->setCommentAuthor($name);
$akismet->setCommentAuthorEmail($email);
$akismet->setCommentAuthorURL($url);
$akismet->setCommentContent($comment);
$akismet->setPermalink($_SERVER['HTTP_REFERER']);
// Проверим сообщение
if($akismet->isCommentSpam()) {
// Сообщение помечено как спам
} else {
// Сообщение - не спам
}
}
}
// Вернем пользователя на ту страницу,откуда откуда он пришел
header('Location: '.preg_replace('|&rnd=[0-9]+|si', '', $_SERVER['HTTP_REFERER']).'&rnd='.time());
Случается, что хорошие комментарии не проходят и попадают в спам, либо наоборот — плохие спамерские проходят. Для устранения данной проблемы в классе есть две полезные функции.
Перед вызовом следующих функций, убедитесь, что данные комментария были записаны в переменные, как это сделано выше.
<?php $akismet->submitHam(); ?>
Этой функцией вы сообщите Akismet, что комментарий, определённый как спам, на самом деле в порядке.
<?php $akismet->submitSpam(); ?>
Здесь же наоборот. Вы сообщите о спаме, информация о нем добавится в базу, и в следующий раз такой комментарий не будет одобрен.
Ссылки
Источник: https://www.kobzarev.com/programming/akismet-install/