Vérification de commentaire

C’est l’appel que vous ferez le plus souvent. Il prend un certain nombre d’arguments et de caractéristiques sur le contenu soumis, puis renvoie un pouce en l’air ou en bas. Les performances peuvent chuter considérablement si vous choisissez d’exclure des points de données. Plus vous envoyez de données à Akismet sur chaque commentaire, plus la précision est grande. Nous vous recommandons de privilégier l’inclusion de trop de données.

Cette méthode est appelée avec l’URL suivante :

https://rest.akismet.com/1.1/comment-check

Important : tous les paramètres doivent être envoyés via la méthode POST.

Paramètres

api_key (obligatoire)
Votre clé API Akismet. Vous pouvez la trouver sur votre tableau de bord de compte à https://akismet.com/account/

blog (obligatoire)
L’URL de la page d’accueil ou de la page d’accueil de l’instance qui effectue la demande. Pour un blog ou un wiki, cela serait la page d’accueil. Remarque : doit être un URL complet, y compris http://.

user_ip (obligatoire)
Adresse IP de l’auteur du commentaire.

user_agent
Chaîne d’agent utilisateur du navigateur Web qui soumet le commentaire – généralement la variable CGI HTTP_USER_AGENT. Ne pas confondre avec l’agent utilisateur de votre bibliothèque Akismet.

referrer (notez l’orthographe)
Le contenu de l’en-tête HTTP_REFERER doit être envoyé ici.

permalink
L’URL permanente complète de l’entrée à laquelle le commentaire a été soumis.

comment_type
Une chaîne qui décrit le type de contenu envoyé.

Exemples :

  • comment : un commentaire de blog.
  • forum‑post : un message de forum de premier niveau.
  • reply : une réponse à un message de forum de premier niveau.
  • blog‑post : un article de blog.
  • contact‑form : un formulaire de contact ou une soumission de formulaire de commentaires.
  • signup : un nouveau compte utilisateur.
  • message : un message envoyé entre quelques utilisateurs.

Vous pouvez envoyer une valeur qui ne figure pas dans la liste ci-dessus si aucune d’entre elles ne décrit précisément votre contenu. Cela est expliqué plus en détail ici.

comment_author
Nom soumis avec le commentaire.

comment_author_email
Adresse e‑mail soumise avec le commentaire.

comment_author_url
URL soumise avec le commentaire. N’envoyez qu’une URL qui a été saisie manuellement par l’utilisateur, pas une URL générée automatiquement comme l’URL de profil de l’utilisateur sur votre site.

comment_content
Le contenu qui a été soumis.

comment_date_gmt
L’horodatage UTC de la création du commentaire, au format ISO 8601. Peut être omis pour les demandes de vérification de commentaire si le commentaire est envoyé à l’API au moment de sa création.

comment_post_modified_gmt
L’horodatage UTC de l’heure de publication de l’article, de la page ou du fil de discussion sur lequel le commentaire a été publié.

blog_lang
Indique la ou les langues utilisées sur le blog ou le site, au format ISO 639‑1, séparées par des virgules. Un site avec des articles en anglais et en français pourrait utiliser « en, fr_ca ».

blog_charset
L’encodage des caractères pour les valeurs de formulaire incluses dans les paramètres comment_*, telles que « UTF-8 » ou « ISO-8859-1 ».

user_role
Le rôle de l’utilisateur qui a soumis le commentaire. Il s’agit d’un paramètre facultatif. Si vous le définissez sur « administrateur », Akismet renverra toujours false.

is_test
Il s’agit d’un paramètre facultatif. Vous pouvez l’utiliser lorsque vous soumettez des requêtes de test à Akismet.

recheck_reason
Si vous envoyez du contenu à Akismet pour qu’il soit réexaminé, comme un article qui a été modifié ou d’anciens commentaires en attente que vous souhaitez réexaminer, incluez le paramètre recheck_reason avec une chaîne décrivant pourquoi le contenu est réexaminé. Par exemple, recheck_reason=edit.

honeypot_field_name
Si vous utilisez un champ honeypot dans votre implémentation, incluez le nom du champ dans votre demande ainsi que la valeur de ce champ. Par exemple, si vous avez un champ honeypot qui ressemble à <input type= »text » name= »hidden_honeypot_field » style= »display: none; » />, vous devez inclure deux paramètres supplémentaires dans votre demande : honeypot_field_name=hidden_honeypot_field et hidden_honeypot_field=[la valeur de l’entrée].

comment_context
Le paramètre comment_context fournit un contexte pour l’environnement dans lequel le commentaire a été publié : une liste d’étiquettes ou de catégories appliquées à l’article de blog parent ou au site sur lequel le commentaire a été publié.

Spécifiez comment_context en utilisant la notation de paramètre de tableau de style PHP : comment_context[]=cooking&comment_context[]=recipes&comment_context[]=bbq Notez que toutes les étiquettes ou catégories doivent être prises à partir de l’article parent ou de l’environnement; elles ne doivent pas être fournies par les commentateurs eux-mêmes.

Autres variables environnementales du serveur
En PHP, il existe un tableau de variables environnementales appelé $_SERVER qui contient des informations sur le serveur Web lui-même ainsi qu’une clé/valeur pour chaque en-tête HTTP envoyé avec la demande. Ces données sont très utiles pour Akismet. La façon dont le contenu soumis interagit avec le serveur peut être très révélatrice, veuillez donc inclure autant de données que possible.

Exemple PHP

$data = array(
    'blog' => 'http://yourgroovydomain.com',
    'user_ip' => '127.0.0.1',
    'user_agent' => 'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6',
    'referrer' => 'http://www.google.com',
    'permalink' => 'http://yourgroovydomain.com/blog/post=1',
    'comment_type' => 'comment',
    'comment_author' => 'admin',
    'comment_author_email' => 'test@example.com',
    'comment_author_url' => 'http://www.example.com',
    'comment_content' => 'It means a lot that you would take the time to review our software.  Thanks again.'
);

akismet_comment_check( '123YourAPIKey', $data );

// Passes back true (it's spam) or false (it's ham).
function akismet_comment_check( $api_key, $data ) {
    $request = 'api_key=' . urlencode( $api_key ) .
        '&blog=' . urlencode( $data['blog'] ) .
        '&user_ip=' . urlencode( $data['user_ip'] ) .
        '&user_agent=' . urlencode( $data['user_agent'] ) .
        '&referrer=' . urlencode( $data['referrer'] ) .
        '&permalink=' . urlencode( $data['permalink'] ) .
        '&comment_type=' . urlencode( $data['comment_type'] ) .
        '&comment_author=' . urlencode( $data['comment_author'] ) .
        '&comment_author_email=' . urlencode( $data['comment_author_email'] ) .
        '&comment_author_url=' . urlencode( $data['comment_author_url'] ) .
        '&comment_content=' . urlencode( $data['comment_content'] );
 
    $host = $http_host = 'rest.akismet.com';
    $path = '/1.1/comment-check';
    $port = 443;
    $akismet_ua = "WordPress/4.4.1 | Akismet/3.1.7";
    $content_length = strlen( $request );
    $http_request  = "POST $path HTTP/1.0rn";
    $http_request .= "Host: $hostrn";
    $http_request .= "Content-Type: application/x-www-form-urlencodedrn";
    $http_request .= "Content-Length: {$content_length}rn";
    $http_request .= "User-Agent: {$akismet_ua}rn";
    $http_request .= "rn";
    $http_request .= $request;
 
    $response = '';
    
    if( false != ( $fs = @fsockopen( 'ssl://' . $http_host, $port, $errno, $errstr, 10 ) ) ) {

    	fwrite( $fs, $http_request );

    	while ( !feof( $fs ) ) {
    		$response .= fgets( $fs, 1160 ); // One TCP-IP packet
        }

    	fclose( $fs );

    	$response = explode( "rnrn", $response, 2 );
    }

    if ( 'true' == $response[1] ) {
        return true;
    } else {
    	return false;
    }
}

Cet appel renvoie soit true (si c’est du spam) soit false si ce n’est pas le cas.

Exemple de réponse de spam

L’appel renvoie true si le commentaire est du spam. Si vous avez du mal à déclencher une réponse de spam, vous pouvez envoyer « akismet‑guaranteed‑spam » en tant qu’auteur ou « akismet-guaranteed-spam@example.com » en tant qu’e‑mail de l’auteur. Les deux valeurs déclencheront toujours une réponse true.

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 4
    [1] => true
)

Une réponse de spam peut également inclure l’en‑tête X‑akismet‑pro‑tip, comme ceci :

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-pro-tip: discard
           Content-length: 4
    [1] => true
)

Si l’en-tête X-akismet-pro-tip est défini sur discard, cela signifie qu’Akismet a déterminé que le commentaire est un spam flagrant, et vous pouvez le supprimer en toute sécurité sans le sauvegarder dans une file d’attente de spam. En savoir plus sur cette fonctionnalité dans cet article de blog Akismet.

Exemple de réponse de ham

L’appel renvoie false si le commentaire est un ham. Si vous avez du mal à déclencher une réponse de ham, vous pouvez définir « user_role » sur « administrator » et définir le paramètre « is_test » sur « true », et cela déclenchera toujours une réponse false.

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 20:17:08 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           Content-length: 4
    [1] => false
)

Exemple de réponse d’erreur

Si l’appel ne renvoie ni true ni false, l’en-tête X-akismet-debug-help fournira des informations sur l’erreur qui s’est produite. Notez que l’en-tête X-akismet-debug-help ne sera pas toujours envoyé si une réponse ne renvoie pas true ou false.

Array (
    [0] => HTTP/1.1 200 OK
           Server: nginx
           Date: Mon, 24 Feb 2014 16:34:54 GMT
           Content-Type: text/plain; charset=utf-8
           Connection: close
           X-akismet-debug-help: We were unable to parse your blog URI
           Content-length: 7
    [1] => invalid
)

Testez vos données

Il est important de tester Akismet avec une quantité significative de données réelles et en direct afin de tirer des conclusions sur l’exactitude. Akismet fonctionne en comparant le contenu à l’activité de spam réelle qui se produit en ce moment (et cela est basé sur plus que le contenu lui-même), donc générer artificiellement des commentaires de spam n’est pas une approche viable.

Nous sommes là pour vous aider

Si vous êtes bloqué ou avez besoin d’aide pour résoudre un problème, n’hésitez pas à nous contacter.