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/