Kommentarprüfung

Dies ist der Aufruf, den du am häufigsten durchführen wirst. Er nimmt eine Reihe von Argumenten und Eigenschaften zum übermittelten Inhalt und liefert dann als Antwort ein Daumen hoch oder Daumen runter. Die Performance kann drastisch sinken, wenn du Datenpunkte ausschließt. Je mehr Daten du Akismet zu jedem Kommentar sendest, desto genauer ist das Ergebnis. Wir empfehlen, lieber zu viele Daten als zu wenige zu senden.

Diese Methode wird mit der folgenden URL aufgerufen:

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

Wichtig: Alle Parameter sollten über die POST‑Methode gesendet werden.

Parameter

api_key (erforderlich)
Dein Akismet‑API‑Schlüssel. Du findest ihn in deinem Kontodashboard unter https://akismet.com/account/

blog (erforderlich)
Die Startseite oder die URL der Instanz, die die Anfrage stellt. Bei einem Blog oder einem Wiki wäre dies die Startseite. Hinweis: Muss eine vollständige URI sein, einschließlich http://.

user_ip (erforderlich)
IP-Adresse des Kommentarverfassers.

user_agent
User‑Agent‑Zeichenfolge des Webbrowsers, der den Kommentar sendet – normalerweise die Variable HTTP_USER_AGENT cgi. Nicht zu verwechseln mit dem User‑Agent deiner Akismet‑Bibliothek.

referrer (Rechtschreibung beachten)
Der Inhalt des HTTP_REFERER‑Headers sollte hierher gesendet werden.

permalink
Die vollständige permanente URL des Eintrags, zu dem der Kommentar gesendet wurde.

comment_type
Eine Zeichenfolge, die den Typ des gesendeten Inhalts beschreibt.

Beispiele:

  • comment: Ein Blogkommentar.
  • forum‑post: Ein Top‑Level‑Forenbeitrag.
  • reply: Eine Antwort auf einen Top‑Level‑Forenbeitrag.
  • blog‑post: Ein Blogbeitrag.
  • contact‑form: Ein Kontaktformular oder ein Feedback‑Formular.
  • signup: Ein neues Benutzerkonto.
  • message: Eine Nachricht, die zwischen nur wenigen Benutzern gesendet wurde.

Du kannst auch einen Wert senden, der nicht aufgeführt ist, wenn keiner der genannten deinen Inhalt genau beschreibt. Dies wird hier weiter erläutert.

comment_author
Name, der mit dem Kommentar übermittelt wurde.

comment_author_email
E‑Mail‑Adresse, die mit dem Kommentar übermittelt wurde.

comment_author_url
URL, die mit dem Kommentar übermittelt wurde. Sende nur eine URL, die vom Benutzer manuell eingegeben wurde, nicht eine automatisch generierte URL wie die Profil‑URL des Benutzers auf deiner Website.

comment_content
Der übermittelte Inhalt.

comment_date_gmt
Der UTC‑Zeitstempel der Erstellung des Kommentars im ISO 8601‑Format. Kann bei Kommentarprüfungsanfragen weggelassen werden, wenn der Kommentar zum Zeitpunkt seiner Erstellung an die API gesendet wird.

comment_post_modified_gmt
Der UTC‑Zeitstempel der Veröffentlichungszeit des Beitrags, der Seite oder des Threads, wo der Kommentar veröffentlicht wurde.

blog_lang
Gibt die auf dem Blog oder der Website verwendete(n) Sprache(n) im ISO 639‑1‑Format an, durch Kommas getrennt. Eine Website mit Artikeln auf Englisch und Französisch könnte „en, fr_ca“ verwenden.

blog_charset
Die Zeichenkodierung für die in den comment_* Parametern enthaltenen Formularwerte, wie „UTF‑8“ oder „ISO‑8859‑1“.

user_role
Die Benutzerrolle des Benutzers, der den Kommentar übermittelt hat. Dies ist ein optionaler Parameter. Wenn du ihn auf „administrator“ setzt, liefert Akismet immer die Antwort „false“.

is_test
Dies ist ein optionaler Parameter. Du kannst ihn verwenden, wenn du Testabfragen an Akismet sendest.

recheck_reason
Wenn du Inhalte an Akismet zur erneuten Überprüfung sendest, z. B. einen Beitrag, der bearbeitet wurde, oder alte ausstehende Kommentare, die du erneut überprüfen möchtest, füge den Parameter recheck_reason mit einer Zeichenfolge hinzu, die beschreibt, warum der Inhalt erneut überprüft wird. Zum Beispiel: recheck_reason=edit.

honeypot_field_name
Wenn du ein Honeypot‑Feld in deiner Implementierung verwendest, füge den Namen des Feldes sowie den Wert dieses Feldes in deine Anfrage ein. Wenn du beispielsweise ein Honeypot‑Feld hast, das wie <input type=“text“ name=“hidden_honeypot_field“ style=“display: none;“ /> aussieht, solltest du zwei zusätzliche Parameter in deine Anfrage aufnehmen: honeypot_field_name=hidden_honeypot_field und hidden_honeypot_field=[der Wert des Eingabefeldes].

comment_context
Der Parameter comment_context bietet Kontext für die Umgebung, in der der Kommentar veröffentlicht wurde: eine Liste mit Tags oder Kategorien, die auf den übergeordneten Blogbeitrag angewendet werden, oder die Website, auf der der Kommentar veröffentlicht wurde.

Gib comment_context mit Array‑Parameter‑Notation im PHP‑Stil an: comment_context[]=cooking&comment_context[]=recipes&comment_context[]=bbq. Beachte, dass alle Tags oder Kategorien aus dem übergeordneten Beitrag oder der Umgebung stammen sollten; sie sollten nicht von den Kommentierenden selbst bereitgestellt werden.

Andere serverseitige Umgebungsvariablen
In PHP gibt es ein Array von Umgebungsvariablen namens $_SERVER, das Informationen über den Webserver selbst sowie einen Schlüssel/Wert für jeden mit der Anfrage gesendeten HTTP‑Header enthält. Diese Daten sind für Akismet äußerst nützlich. Die Art, wie der übermittelte Inhalt mit dem Server interagiert, kann sehr aufschlussreich sein. Bitte füge so viele Informationen wie möglich hinzu.

PHP-Beispiel

$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 );

// Gibt true zurück (es ist Spam) oder false (es ist kein Spam).
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;
    }
}

Dieser Aufruf liefert entweder die Antwort „true“ (wenn es sich um Spam handelt) oder „false“, wenn es kein Spam ist.

Beispiel für eine Spam‑Antwort

Der Aufruf liefert die Antwort „true“, wenn der Kommentar Spam ist. Wenn du Probleme hast, eine Spam‑Antwort auszulösen, kannst du „akismet‑guaranteed‑spam“ als Autor oder „akismet-guaranteed-spam@example.com“ als E‑Mail‑Adresse des Autoren senden. Beide Werte lösen immer die Antwort „true“ aus.

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
)

Eine Spam-Antwort kann auch den Header X-akismet-pro-tip enthalten, zum Beispiel so:

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
)

Wenn der Header X-akismet-pro-tip auf discard gesetzt ist, hat Akismet festgestellt, dass der Kommentar offensichtlicher Spam ist, und du kannst ihn sicher verwerfen, ohne ihn in einer Spam-Warteschlange zu speichern. Erfahre mehr über diese Funktion in diesem Akismet-Blogbeitrag.

Beispiel für eine „Kein Spam“‑Antwort

Der Aufruf liefert die Antwort „false“, wenn der Kommentar kein Spam ist. Wenn du Probleme hast, eine „Kein Spam“‑Antwort auszulösen, kannst du „user_role“ auf „administrator“ setzen und den Parameter „is_test“ auf „true“ setzen, dann wird immer eine „false“‑Antwort ausgelöst.

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
)

Beispiel für eine Fehlerantwort

Wenn der Aufruf weder true noch false als Antwort liefert, gibt der Header X-akismet-debug-help Kontext für jeden aufgetretenen Fehler an. Beachte, dass der Header X-akismet-debug-help nicht immer gesendet wird, wenn eine Antwort nicht „false“ oder „true“ liefert.

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
)

Testen deiner Daten

Es ist wichtig, Akismet mit einer signifikanten Menge an echten, aktuellen Daten zu testen, um Schlussfolgerungen zur Treffsicherheit ziehen zu können. Akismet funktioniert, indem es Inhalte mit echten Spamaktivitäten vergleicht, die gerade jetzt stattfinden (und dies basiert auf mehr als nur den Inhalten selbst), daher ist das künstliche Generieren von Spamkommentaren kein praktikabler Ansatz.

Wir sind hier, um zu helfen

Wenn du einmal nicht weiterkommst oder Hilfe bei der Problembehandlung benötigst, kannst du uns jederzeit gerne kontaktieren.