Using the Service Without CleanTalk's PHP Library

 

Direct calls to servers:

GET query:

You could use this for debugging. Each parameter sends as GET parameter.

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

You will get a JSON string. See below.

wget query:

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 must be 12 and 1.

 

Our own API:

PHP part:

<?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")) //comparing dates from browser and server - it should be equal if JavaScript is enabled
                $js_on = 1;
        $params = array(
                'method_name' => 'check_newuser',
                'auth_key' => 'enter_your_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'], //"submitting time" minus "accessing 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(); //save page accessing time when access page via GET method
}
?>

Submit_time and js_on parameters are very important for checking. Submit_time is the difference between submitting form time and page accessing time. Js_on can be calculated by evaluating some JavaScript code in browser and comparing with reference value on server side.  See in example, how you can calculate them:

 

HTML part:

<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>

 

In all variants you will get a JSON strings as a response, for example:

In case of using without the API you have to parse that string yourself.

{
"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
}

 

Response explanation:

  • stop_queue - (0) or (1);
  • inactive - account state (0) or (1);
  • version - version of server programm;
  • codes - response codes;
  • spam - seems like spam (0) or (1);
  • js_disabled - JavaScript is disabled (0) or (1);
  • comment - server's comment (see below)
  • blacklisted - sender is blacklisted (0) or (1);
  • fast_submit - check of the submitting speed  (0) or (1);
  • account_status - account status (0) or (1)
  • id - id of request (usefull to Tech support);
  • allow - result: allowed (1) or not (0).

 

Codes explanation:

  • allow - is registration allowed (1) or not (0);
  • comment - comment for server's decision or for another errors (wrong access key etc.);
  • id - message ID (helpful for our support),
  • codes - answer codes.
  • Answer codes may be:
  • 'ALLOWED' - Allowed.
  • 'ALLOWED_PRIV_LIST' - Private list allow.
  • 'ALLOWED_PROFILE' - Profile allowed.
  • 'ALLOWED_USER' - User allowed.
  • 'BAD_INSTALL' - Check plugin setup.
  • 'BAD_LANGUAGE' - Contains bad language.
  • 'BL_DOMAIN' - HTTP links blacklisted
  • 'BL' - Sender blacklisted.
  • 'COMMENT_TYPE_UNKNOWN' - Trackback, Pingback comment's type need manual moderation.
  • 'CONTACTS' - Contains links.
  • 'CONTACTS_DATA' - Contains contacts.
  • 'DENIED' - Forbidden.
  • 'DENIED_GREY_LIST' - Please submit form again.
  • 'DENIED_PRIV_LIST' - Private list deniy.
  • 'DENIED_PROFILE' - Profile forbidden.
  • 'DENIED_USER' - User forbidden.
  • 'ERR_CLIENT_IP_EQ_SERVER_IP' - Site visitor IP is rqual to server site IP.
  • 'FAST_SUBMIT' - Submitted too quickly.
  • 'FORBIDDEN' - Forbidden.
  • 'JS_DISABLED' - Please enable JavaScript.
  • 'KEY_NOT_FOUND' - “Antispam disabled. Check access key.
  • 'MANUAL' - Need manually approve.
  • 'MULT_MESSAGE' - Massive posting.
  • 'MULT_SUBMIT' - Multiple comments submit.
  • 'NO_NORM_WORDS' - Without dictionary words.
  • 'OFFTOP' - Offtopic.
  • 'SERVICE_DISABLED' - Service disabled. Check account status.
  • 'SERVICE_FREEZED' - Service freezed. Please extend limit.
  • 'STOP_LIST' - Contains stop words.
  • 'TRIAL_EXPIRED' - Trial period expired.
  • 'USERNAME_SPAM' - Spam sender name.
  • 'WRONG_TZ' - Wrong timezone.
  • "FORBIDDEN EMAIL_NOT_EXISTS" - E-mail address does not exist.

 

There are two codes with the same meaning ’DENIED’ and ’FORBIDDEN’. It is made so to support old versions of the CleanTalk plugin.

 

If you still have questions you can always ask our tech support by creating a Private Ticket: https://cleantalk.org/my/support/open

 

 


Perhaps it would also be interesting