Controllo dei commenti

Questa è la chiamata che farai più spesso. Richiede un numero di argomenti e caratteristiche sul contenuto inviato e restituisce un pollice in su o un pollice in giù. Le prestazioni possono diminuire drasticamente se scegli di escludere i punti dati. Più dati invii ad Akismet su ogni commento, maggiore sarà l’accuratezza. Ti consigliamo di includere più dati possibili.

Questo metodo viene chiamato con l’URL qui sotto:

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

Importante: Tutti i parametri devono essere inviati tramite il metodo POST.

Parametri

api_key (richiesto)
La tua chiave API di Akismet. Puoi trovarla nella bacheca del tuo account su: https://akismet.com/account/

blog (richiesto)
L’URL della pagina principale o home dell’istanza che effettua la richiesta. Per un blog o una wiki, è la pagina principale. Nota bene: deve essere un URI completo, con http:// incluso.

user_ip (richiesto)
Indirizzo IP dell’autore del commento.

user_agent
Stringa user agent del browser web che invia il commento, di solito la variabile HTTP_USER_AGENT cgi. Da non confondere con l’user agent della tua libreria Akismet.

referrer (nota bene l’ortografia)
Il contenuto dell’intestazione HTTP_REFERER deve essere inviato qui.

permalink
L’URL permanente completo dell’articolo a cui è stato inviato il commento.

comment_type
Una stringa che descrive il tipo di contenuto inviato. Ad esempio:

  • comment: un commento al blog.
  • forum‑post: un articolo di forum di primo livello.
  • reply: una risposta a un articolo di forum di primo livello.
  • blog‑post: un articolo del blog.
  • contact‑form: un modulo di contatto o un modulo di feedback inviato.
  • signup: un nuovo account utente.
  • message: un messaggio scambiato tra pochi utenti.

Puoi inviare un valore non elencato sopra se nessuno di questi descrive accuratamente i tuoi contenuti. Scopri di più qui.

comment_author
Nome inviato con il commento.

comment_author_email
Indirizzo e‑mail inviato con il commento.

comment_author_url
URL inviato con il commento. Invia solo un URL inserito manualmente dall’utente, non un URL generato automaticamente come l’URL del profilo dell’utente sul tuo sito.

comment_content
Il contenuto inviato.

comment_date_gmt
L’orario UTC della creazione del commento, nel formato ISO 8601. Può essere omesso per le richieste di controllo commento se il commento viene inviato all’API al momento della creazione.

comment_post_modified_gmt
L’orario UTC della pubblicazione dell’articolo, pagina o discussione in cui è stato inviato il commento.

blog_lang
Indica la lingua utilizzata nel blog o nel sito, nel formato ISO 639‑1, separati da una virgola. Un sito con articoli in inglese e francese potrebbe usare “en, fr_ca”.

blog_charset
L’encoding dei caratteri per i valori del modulo inclusi nei parametri comment_*, come “UTF-8” o “ISO-8859-1”.

user_role
Il ruolo dell’utente che ha inviato il commento. Questo è un parametro facoltativo. Se lo imposti su “amministratore”, Akismet restituirà sempre false.

is_test
Questo è un parametro facoltativo. Puoi usarlo quando invii query di test ad Akismet.

recheck_reason
Se stai inviando contenuti ad Akismet perché vengano riesaminati, ad esempio un articolo che è stato modificato o vecchi commenti in sospeso che vuoi riesaminare, includi il parametro recheck_reason con una stringa che descrive perché il contenuto viene riesaminato. Ad esempio, recheck_reason=edit.

honeypot_field_name
Se usi un campo honeypot nella tua implementazione, includi il nome del campo nella richiesta, così come il valore di quel campo. Ad esempio, se hai un campo honeypot che appare come <input type=”text” name=”hidden_honeypot_field” style=”display: none;” />, devi includere due parametri aggiuntivi nella tua richiesta: honeypot_field_name=hidden_honeypot_field e hidden_honeypot_field=[il valore dell’input].

comment_context
Il parametro comment_context fornisce il contesto per l’ambiente in cui è stato inviato il commento: un elenco di tag o categorie applicate all’articolo del blog padre o al sito su cui è stato inviato il commento.

Specifica comment_context usando la notazione del parametro dell’array in stile PHP: comment_context[]=cucina&comment_context[]=ricette&comment_context[]=bbq. Nota bene che i tag o le categorie devono essere presi dall’articolo padre o dall’ambiente e non devono essere forniti dagli autori dei commenti.

Altre variabili ambientali del server
In PHP, c’è un array di variabili ambientali chiamato $_SERVER che contiene informazioni sul server web stesso e una chiave/valore per ogni intestazione HTTP inviata con la richiesta. Questi dati sono molto utili per Akismet. Il modo in cui il contenuto inviato interagisce con il server può essere molto rivelatore, quindi includi il più possibile.

Esempio 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;
    }
}

Questa chiamata restituisce “true” (se è spam) o “false” (se non lo è).

Esempio di risposta spam

La chiamata restituisce “true” se il commento è spam. Se hai problemi a ottenere una risposta di spam, puoi inviare “akismet‑guaranteed‑spam” come autore o “akismet-guaranteed-spam@example.com” come e‑mail dell’autore. Entrambi i valori attiveranno sempre una risposta “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
)

Una risposta di spam può includere anche l’intestazione X‑akismet‑pro‑tip, come qui sotto:

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
)

Se l’intestazione X‑akismet‑pro‑tip è impostata su discard, allora Akismet ha determinato che il commento è uno spam evidente e puoi eliminarlo in tutta sicurezza senza salvarlo in una coda di spam. Scropri di più su questa funzionalità in questo articolo sul blog di Akismet.

Esempio di risposta non spam

La chiamata restituisce “false” se il commento non è spam. Se hai problemi a ottenere una risposta di non spam, puoi impostare “user_role” su “administrator” e impostare il parametro “is_test” su “true”, e attiverà sempre una risposta “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
)

Esempio di risposta di errore

Se la chiamata non restituisce né true né false, l’intestazione X‑akismet‑debug‑help fornirà il contesto per qualsiasi errore verificatosi. Nota bene che l’intestazione X‑akismet‑debug‑help non verrà sempre inviata se una risposta non restituisce false o true.

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
)

Testa i tuoi dati

È importante testare Akismet con una quantità significativa di dati reali e live, se si vuole verificarne l’accuratezza. Akismet funziona confrontando il contenuto con l’attività di spam che si sta verificando in questo momento (e non si basa solo sul contenuto), quindi generare artificialmente commenti di spam non è un approccio valido.

Siamo qui per aiutarti

Se sei difficoltà o hai bisogno di aiuto, non esitare a contattarci.