Quick Memo HTML & PHP : inclure Google reCAPTCHA version 2

Comment inclure le système de vérification Google reCAPTCHA version 2 dans un formulaire web ?

  • Etape 1 : Enregistrer le site/domaine auprès de Google pour obtenir la clé publique (client-side) et la clé privée (server-side).
  • Etape 2 : inclure la ligne suivante dans la balise <head> de la page contenant le formulaire :
<script src='https://www.google.com/recaptcha/api.js?hl=fr'></script>
  • Etape 3 : inclure la ligne suivante dans le formulaire, avant le bouton ‘submit’, en mentionnant la clé publique (côté client) :
<div class="g-recaptcha" data-sitekey="votre-clé-publique"></div>
  • Etape 4 : dans le script PHP recevant la requête du formulaire, inclure le code suivant :
// Renseigner la clé secrete fournie par Google
$secret = "votre-clé-secrete"; 

// Reseter la variable $response
$response = null; 

// Utiliser la fonction built-in pour checked la clé secrete
$reCaptcha = new ReCaptcha($secret);	

// Vérifier les données retournées par le CAPTCHA du formulaire
if (isset($_POST["g-recaptcha-response"])) {
   $captcha=$_POST['g-recaptcha-response'];
   $response=file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=".$secret."&response=".$captcha."&remoteip=".$ip);
   $responseKeys = json_decode($response,true);
}

// Evaluer si la réponse est bonne
if (intval($responseKeys["success"]) !== 1) {
   // PAS BON ! Prévoir un message d'erreur.
}
else { 
   // BON, on continue à traiter les données du formulaire !
}
Exemple d'implémentation du reCAPTCHA
Exemple d’implémentation du reCAPTCHA

2 réflexions au sujet de “Quick Memo HTML & PHP : inclure Google reCAPTCHA version 2”

  1. Merci beaucoup pour cette explication simple, claire qui permet à n’importe qui (même moi !) d’insérere facilement le captcha dans un formulaire !
    C’est parfait
    Pour ma part, je suis un peu débutante, j’ai une question probablement bête, mais … j’ai l’impression que la « réponse » est soit « TRUE » soit « FALSE ». Personnellement, j’aurais bien aimé pouvoir avoir l’option « empty », donc ni true ni false, avant de vérifier si c’est true ou false, mais je n’ai pas trouvé comment. Serait-ce possible ?

    Répondre
    • Bonjour, merci pour votre commentaire. En ce qui concerne votre question, pourriez-vous m’expliquer la raison pour laquelle vous désirez évaluer un cas ‘vide’ ?
      En effet, il est obligatoire de passer la vérification, et le résultat est donc forcément soit TRUE soit FALSE. Le formulaire ne doit pas se valider du tout (pas de SUBMIT possible) si le captcha n’a pas été correctement validé. C’est un best-practice, même si ce n’est pas démontré dans mon post, car ce n’est pas l’objet premier de celui-ci.

      Bien à vous,

      Antoine D.

      Répondre

Laisser un commentaire