Пример без подключения PHP-библиотеки

 

Прямые запросы на сервер:

Прямой GET запрос:

Такой способ можно использовать для отладки. Каждый параметр передается как GET параметр.

https://api.cleantalk.org/?method_name=spam_check&auth_key=123456&email=stop_email@example.com&ip=127.0.0.1

В ответе вы получите JSON строку. Смотрите ниже.

 

Пример использования wget:

wget -O- --post-data=' {"method_name":"check_newuser","auth_key":"your_acccess_key","sender_email":"stop_email@example.com","sender_nickname":"John Doe","sender_ip":"127.0.0.1","js_on":1,"submit_time":15}' https://moderate.cleantalk.org/api2.0

Если вы делаете тестовый запрос параметры submit_time и js_on необходимо оставить со значениями 12 и 1 соответственно.

 

Собственный API:

Пример использования, PHP часть:

 

<?php

session_start();

if (count($_POST))

{

        $sender_info = array(

                'user_agent' => $_SERVER['HTTP_USER_AGENT'],

                'referer' => $_SERVER['HTTP_REFERER'],

        );

        $js_on = 0;

        if (isset($_POST['js_on']) && $_POST['js_on'] == date("Y")) //Сравнеине даты сервера и браузера - оно должно быть одинаковым если JavaScript включен

                $js_on = 1;

        $params = array(

                'method_name' => 'check_newuser',

                'auth_key' => 'Ваш_ключ',

                'sender_email' => isset($_POST['email']) ? $_POST['email'] : 'stop_email@example.com',

                'sender_nickname' => isset($_POST['login']) ? $_POST['login'] : 'John Doe',

                'sender_ip' => $_SERVER['REMOTE_ADDR'],

                'js_on' => $js_on ,

                'submit_time' => time() - (int) $_SESSION['ct_submit_time'], //"Время оправки формы" минус "время доступа на страницу" = submit_time

                'sender_info' => json_encode($sender_info),

        );

        $check = curl_init();

        curl_setopt($check, CURLOPT_URL, 'https://moderate.cleantalk.org/api2.0');

        curl_setopt($check, CURLOPT_TIMEOUT, 10);

        curl_setopt($check, CURLOPT_POST, true);

        curl_setopt($check, CURLOPT_POSTFIELDS, json_encode($params)); // receive server response ...

        curl_setopt($check, CURLOPT_RETURNTRANSFER, true); // resolve 'Expect: 100-continue' issue

        curl_setopt($check, CURLOPT_HTTPHEADER, array('Expect:'));

        curl_setopt($check, CURLOPT_SSL_VERIFYPEER, false);

        curl_setopt($check, CURLOPT_SSL_VERIFYHOST, false);

        $result = curl_exec($check);

        curl_close($check);

 

        if ($result)

        {

                $ct_result = json_decode($result);

                if ($ct_result->allow == 1)

                        echo 'Message allowed. Reason ' . $ct_result->comment;

                else

                        echo 'Message forbidden. Reason ' . $ct_result->comment;

                echo '<br /><br />';

        }

else

        $_SESSION['ct_submit_time'] = time(); //Сохранение время доступа на страницу когда работаем через GET метод

}

?>

Параметры submit_time и js_on очень важны для проверки. submit_time это количество секунд между моментом отправки формы и загрузкой страницы. js_on может быть рассчитана путем оценки результата выполнения JavaScript в браузере и сравнение с эталонным значением на стороне сервера. В примере показано, как можно вычислить их.

 

HTML часть:

 

<form method="post">

        <label for="login">Login:<label>

        <input type="text" name="login" id="login" /> <br />

        <label for="email">Email:<label>

        <input type="text" name="email" id="email" value="" /> <br />

        <input type="hidden" name="js_on" id="js_on" value="0" />

        <input type="submit" />

</form>

<script type="text/javascript">

var date = new Date(); document.getElementById("js_on").value = date.getFullYear();

</script>

 

В любом случае сервер вернет вам JSON строку, на пример:

В случае использования сервиса без API вам придется разбирать эту строку самостоятельно.

{ "stop_queue" : 1, "inactive" : 0, "version" : "7.76", "codes" : "DENIED BL FAST_SUBMIT", "spam" : 0, "js_disabled" : 0, "comment" : "*** Forbidden. Sender blacklisted. You submitted too quickly. You may try again in a few seconds. ***", "blacklisted" : 1, "fast_submit" : 1, "account_status" : "1", "id" : "5a78dca12150a9bb3364a69ee02879a9", "allow" : 0 }

 

Рaзъяснения ответов:

  • stop_queue - (0) или (1);
  • inactive - состояние аккаунта (0) или (1);
  • version - версия серверного ПО;
  • codes - коды ответа коды ответа вы можете посмотреть здесь ;
  • spam - похоже ли сообщение на спам (0) или (1);
  • js_disabled - Отключен ли JavaScript (0) или (1);
  • comment - комментарий решения сервера или комментарий ошибки (не правильный ключ доступа, и т.п.);
  • blacklisted - проверка по черным спискам (0) или (1);
  • fast_submit - проверка скорости подтверждения формы (0) или (1);
  • account_status - состояние аккаунта (0) или (1), зависти от проверки ключа доступа;
  • id - идентификатор запроса (полезен при обращении в техническую поддержку);
  • allow - результат: разрешено сообщение (1) или нет (0).

 

Варианты кодов ответа:

  • 'ALLOWED' - Разрешен.
  • 'ALLOWED_PRIV_LIST' - Разрешен по приватным белым спискам.
  • 'ALLOWED_PROFILE' - Профиль разрешен.
  • ALLOWED_USER' - Пользователь разрешен.
  • 'BAD_INSTALL' - Проверьте установку плагина.
  • 'BAD_LANGUAGE' - Содержит плохой язык.
  • 'BL_DOMAIN' - HTTP ссылки из черных списков.
  • 'BL' - Отправитель находится в черном списке.
  • 'COMMENT_TYPE_UNKNOWN' - Trackback, Pingback comment's type need manual moderation.
  • 'CONTACTS' - Содержит ссылки.
  • 'CONTACTS_DATA' - Содержит контактные данные.
  • 'DENIED' - Запрещен.
  • 'DENIED_GREY_LIST' - Пожалуйста отправьте форму снова.
  • 'DENIED_PRIV_LIST' - Содержится в черных списках.
  • 'DENIED_PROFILE' - Профиль заблокирован.
  • 'DENIED_USER' - Пользователь заблокирован.
  • 'ERR_CLIENT_IP_EQ_SERVER_IP' - IP посетителя совпадает с IP сервера.
  • 'FAST_SUBMIT' - Слишком быстрая отправка формы.
  • 'FORBIDDEN' - Запрещен.
  • 'JS_DISABLED' - Пожалуйста, включите JavaScript.
  • 'KEY_NOT_FOUND' - Антиспам выключен. Проверьте ключ доступа.
  • 'MANUAL' - Необходимо ручное подтверждение.
  • 'MULT_MESSAGE' - Массовая отправка.
  • 'MULT_SUBMIT' - Повторная отправка комментария.
  • 'NO_NORM_WORDS' - Нет словарных слов.
  • 'OFFTOP' - Оффтоп.
  • 'SERVICE_DISABLED' - Сервис выключен, проверьте статус аккаунта.
  • 'SERVICE_FREEZED' - Сервис остановлен, увеличьте лимит запросов.
  • 'STOP_LIST' - Содержит стоп-слова.
  • 'TRIAL_EXPIRED' - Пробный период истек.
  • 'USERNAME_SPAM' - Спамерское имя отправителя.
  • 'WRONG_TZ' - Ошибочный часовой пояс.

 

Если остались вопросы, то Вы всегда можете связаться со службой технической поддержки, создав обращение здесь [ https://cleantalk.org/my/support ] или написав на почту [ welcome@cleantalk.org ].

 

 


Возможно, будет так же интересно