Установка 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();
?>

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

Ссылки

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>