Validiranje na strežniku

Ne glede na to, katero verzijo uporabljamo, je potrebno preveriti verodostojnost rezultata, ki nam ga vrne CAPTCHA. Kot smo spoznali že v predhodnim poglavjih, nam vrne orodje geslo oziroma značko (angl. token). Do tokena lahko dostopamo na tri načine:

  • preko parametra g-recaptcha-response, ki je del zahteve, ki se pošlje na server ob potrditvi obrazca,
  • z uporabo funkcije getResponse(widgetID), ki smo jo spoznali v poglavju JavaScript API,
  • z definiranjem atributa data-callback, ki smo ga spoznali v poglavju Konfiguriranje vsebnika.
Ko dobimo geslo, ga moramo skupaj z našim skrivnim ključem preveriti na API-ju na naslovu https://www.google.com/recaptcha/api/siteverify. Pri tem moramo poslati POST zahtevo, zraven prej omenjenih atributov, pa lahko zraven posredujemo še IP naslov uporabnika.
 

Primer implementacije v jeziku PHP bi izgledal približno tako:

/* Definiramo skrivni kljuc in povezavo do API-ja*/
$secret_key = 'SKRIVNI_KLJUC';
$url = 'https://www.google.com/recaptcha/api/siteverify';
/*Iz zahteve prevzamemo vrednost gesla*/
$token = $_POST["g-recaptcha-response"];
/*Podatke shranimo v polje*/
$data = array('secret' => $secret_key, 'response' => $token);
/*Izvedemo POST zahtevo*/
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query( $data )
)
);
$context = stream_context_create( $options );
$result = file_get_contents( $url, false, $context );
/*Odgovor je v JSON formatu*/
$response = json_decode( $result );
/*Preko paramtera success vidimo, če je preverjanje uspelo ali ne*/
$response->success;
Pri tem nam orodje vrne rezulat v JSON formatu. Pri tem so podani status, domena spletne strani in datum ter čas preverjanja, lahko pa so vrnjene tudi kakšne napake, v kolikor pride do njih. V primeru uporabe tretje verzije orodja, nam vrne tudi oznako dogodka (action) in verjetnost,da je uporabnik oseba (score).
{
    "success":true, 
    "challenge_ts":"2019-05-27T18:39:36Z", 
    "hostname":"captcha.si", 
    "score":0.7, 
    "action":"test", 
}