Пример без подключения PHP-библиотеки
Прямые запросы на сервер:
Прямой GET запрос:
Такой способ можно использовать для отладки. Каждый параметр передается как GET параметр.
В ответе вы получите 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' - Ошибочный часовой пояс.
- 'EMAIL_NOT_EXISTS' - адрес e-mail не существует.
- 'BL_EMAIL' - E-mail в чёрном списке.
- 'BL_IP' - IP в чёрном списке.
- 'SEEMS_SPAM_EMAIL' - E-mail попадает под шаблон спам адреса.
- 'SEEMS_SPAM_HEADERS' - Заголовок запроса HTTP похож на спам бота.
- 'SEEMS_SPAM_MESSAGE' - Текст сообщения подходит под шаблон спама.
- 'SEEMS_SPAM_NICK' - Nickname попадает под шаблон спама.
- 'EMAIL_DOMAIN_NOT_EXISTS'- домен e-mail не существует.
Если у вас остались вопросы, то Вы всегда можете связаться со службой технической поддержки. Создайте обращение здесь [ https://cleantalk.org/my/support/open ].