Верх страницы
Обложка к записи Установка standalone версии Akismet для сайта
Время для прочтения: 0 мин. 3 сек.

Установка standalone версии Akismet для сайта

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();
?>

Здесь же наоборот. Вы сообщите о спаме, информация о нем добавится в базу, и в следующий раз такой комментарий не будет одобрен.

Ссылки

Автор: Кобзарёв Михаил

Русский разработчик с 20-ти летним стажем. Работаю с PHP, ООП, JavaScript, Git, WordPress, Битрикс, Joomla, Drupal, OpenCart, DLE, Laravel, Moonshine, Symfony, SuiteCRM.

Оптимизирую сайты под Google Page Speed, настраиваю импорты для больших магазинов на WooCommerce + WP All Import. Пишу плагины на заказ. Все мои услуги.

Веду блог о разработке, дайджест в телеграмме и в ВК.

Вы всегда можете нанять меня.

Комментарии
Подписаться
Уведомить о
guest

0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Предыдущая запись

Давайте дружить
в Telegram

Авторский блог вашего покорного слуги в Telegram про web, программирование, алгоритмы, инструменты разработчика, WordPress, Joomla, Opencart, Laravel, Moonshine, фильмы и сериалы