Abbiamo litigato tutti contro i robot che compilano i form pubblicati nei nostri siti con frasi senza senso ne logica e neppure un minimo di umorismo.
I Captcha ci hanno aiutato per benino ad eliminarne una buona parte, ma purtroppo sempre a discapito dell’utente, della User Experience e soprattutto, dell’estetica. Nell’arco degli anni abbiamo visto captcha di ogni genere, ma mai davvero convincenti:
Finalmente Google ha preso in mano le redini di questo marasma di parole in aramaico e ha deciso di semplificare la vita degli utenti, compromettendo invece quella dei bot.
in realtà il procedimento di verifica è sempre lo stesso, solo che mettendo la spunta, apparirà una tendina con il testo (più semplice), con le lettere o numeri da inserire.
fin qui nessuna rogna, ma procediamo.
1. la registrazione del sito
per poter avere una chiave di attivazione, Google ci richiede una semplice registrazione, di un nome e di un url sul quale vogliamo inserire il reCAPTCHA. Ci si registra qui:
https://www.google.com/recaptcha/adminfatto questo si ottengono DUE Chiavi, una per il form e l’atra per recuperare la risposta (che vediamo dopo)
2. implementare nel form
questo passaggio è facile facile. basta inserire nell’head questa chiamata:
<script src='https://www.google.com/recaptcha/api.js'></script>
e nel form, di solito prima del pulsante di submit
<div class="g-recaptcha" data-sitekey="CHIAVE-del-SITO"></div>
per ottenere questa cosa qui:
3. recuperare l’OK da google (via PHP)
per poter recuperare l’approvazione da parte di google, occorre effettuare una chiamata alla API. Io, semplicemente, ho fatto così:
<?PHP $captcha; if(isset($_POST['g-recaptcha-response'])){ $captcha=$_POST['g-recaptcha-response']; } if(!$captcha){ echo '<h2>non hai messo il codice captcha.</h2>'; exit; } $Key = "CHIAVE-SEGRETA"; $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$Key."&response=".$captcha."&remoteip=".$_SERVER['REMOTE_ADDR']); if($response.success==false) { echo '<h2>Brutto Spammer! sciò!</h2>'; }else{ echo '<h2>OK, sei un bravo ragazzo.</h2>'; //.... spedisci ... } ?>