Usare reCAPTCHA con PHP
Pare che sia sempre più un obbligo proteggere i form che stanno sui siti / blog dagli spammer, soprattutto se per accedere a un form non occorre registrarsi.
Tra i tanti servizi / plugin io ho scelto reCAPTCHA, uno dei servizi più usati e che è "offerto" gratuitamente da Google.
Per usarlo occerre innanzitutto registrarsi; una volta fatto si può andare in questa pagina per aggiungere il proprio sito.
A questo punto siamo pronti per cominciare; qua la pagina di documentazione.
I linguaggi supportati sono diversi (PHP, Java, Python, Javascript, ecc....) e io ho scelto il PHP (qui la doc).
Vediamo il form:
<form id="frm_comm" action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
<label>Nome</label>
<input type="text" name="nome" value="">
<label>Email:</label>
<input type="text" name="email" value="">
<label>Commento:</label>
<textarea name="messaggio" rows="10" class="input-xxlarge"></textarea><br>
<?php
include_once 'lib/recaptchalib.php';
$publicKey = '';
echo recaptcha_get_html($publicKey);
?>
<input type="submit" value="Invia" name="btn_invia" class="btn btn-info">
</form>
Come vedete appena sopra la chiusura del form includo le librerie che ho scaricato da qua.
Se avete fatto tutto bene vi ritroverete con la classica finestra per inserire la parola (con lo stile di base che è rosso).
La public key è quella che viene fornita dopo aver aggiunto il sito sul link postato sopra; in quella pagina trovate altre info utili come la private key, che vediamo adesso:
if ($_SERVER['REQUEST_METHOD'] == "POST" && isset($_POST['btn_invia'])) {
} else {
include_once 'lib/recaptchalib.php';
$privateKey = '';
$resp = recaptcha_check_answer($privateKey, $_SERVER["REMOTE_ADDR"], $_POST["recaptcha_challenge_field"], $_POST["recaptcha_response_field"]);
if (!$resp->is_valid) {
echo 'CAPTCHA INVALIDO';
// DO STUFF
}
}
?>
Al submit del form includiamo la libreria e richiamiamo la funzione recaptcha_check_answer, che controlla la parola.
Sotto facciamo un controllo sul rislutato restituito con il parametro is_valid.
Ultima "chicca", se volete impostare alcune proprierà del plugin potete farlo anche via Javascript, mettendo questo spezzone di codice prima di tutto:
<script>
var RecaptchaOptions = {
theme: 'white',
lang: 'it'
};
</script>
Io ho messo il tema bianco.
Ciao!
recaptcha php javascript recaptcha_get_html recaptcha_check_answer google
Commentami!