Advertisement
  1. Web Design
  2. UX/UI
  3. Material Design

Comment intégrer "No CAPTCHA reCAPTCHA" sur votre site

Scroll to top
Read Time: 6 min

() translation by (you can also view the original English article)

Les champs CAPTCHA sont probablement l'expérience la plus frustrante sur le net.  Ils sont assez douloureux pour la majorité des utilisateurs, alors imaginez ce qu'il en est pour les personnes atteintes de déficience visuelle ou ceux utilisant les technologies fonctionnelles comme les lecteurs d'écran. Cependant, malheureusement, les CAPTCHA sont vital dans la lutte contre le spam.

A necessary evil thanks spammersA necessary evil thanks spammersA necessary evil thanks spammers
Un mal nécessaire (merci aux spammers)

Paradoxalement, même si les CAPTCHA traditionnels de type "texte déformé" sont difficiles à lire par les humains, pour les intelligences artificielles modernes c'est assez simple. Google utilise ce genre de technologie pour lire les numéros de maison et les panneaux de signalisation pour valider les emplacements sur Google Street View!

Les robots Google peuvent correctement lire ceux ci.

C'est donc logique que les développeurs de Google aient fourni le meilleur CAPTCHA jusqu'à présent, depuis la fin 2014. No CAPTCHA reCAPTCHA ne demande rien de plus qu'une touche du doigt, un clique de souris ou mettre le focus sur le champ et appuyer sur la touche espace.

Dans la plupart des cas c'est aussi simple que ça, mais si l'analyse des risques de Google n'est pas sûr que vous soyez humain une seconde fenêtre apparaitra.

Vous pouvez le voir en action partout sur internet comme sur la page de soumission de @materialup.

Obtenir No CAPTCHA reCAPTCHA

Ne tournons pas autour du pot et configurons No CAPTCHA.

Étape 1

Premièrement, il nous faut une clé API, rendez-vous sur https://www.google.com/recaptcha/admin. Pour accéder à cette page il faudra vous connecter avec un compte Google. Vous devrez enregistrer votre site, donnez lui un nom correct puis listez les domaines (par exemple tutsplus.com) sur lesquels ce reCAPTCHA sera utilisé. Les sous-domaines (comme webdesign.tutsplus.com et code.tutsplus.com) sont automatiquement pris en compte.

Étape 2

Une fois cette étape faite vous obtiendrez un clé pour le site ainsi que sa clé secrète :

Étape 3

Sous les clés vous pourrez voir quelques exemple pour inclure reCAPTCHA sur votre site. Tout d'abord en JavaScript :

1
<script src='https://www.google.com/recaptcha/api.js'></script>

Vous pouvez aussi définir quelle langue parmi les 40 disponibles en ajoutant un paramètre. Ici nous ajoutons es qui nous donnera un reCAPTCHA en espagnol :

1
<script src='https://www.google.com/recaptcha/api.js?hl=es'></script>

Mettez cette balise script en bas de votre page (ou juste sous le formulaire dans lequel le reCAPTCHA apparaitra, suivant comment vous priorisez le chargement de vos resources).

Étape 4

En suite il faut ajouter le placeholder dans votre formulaire à l'endroit o^vous souhaitez faire apparaitre le reCAPTCHA :

1
<div class="g-recaptcha" data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>

Note : l'attribut data-sitekey contiendrala valeur de votre clé, pas cet exemple.

Il existe d'autres attributs que vous pouvez ajouter pour personnaliser l'apparence et les fonctionnalités de votre reCAPTCHA. Par exemple, ajouter data-theme="dark" à cet élément div affichera une version sombre qui pourrait mieux correspondre à votre interface :

Pour plus de détails sur la configuration de votre reCAPTCHA consultez developers.google.com.

Application

Maintenant que nous avons les ingrédients il est temps de les mettre en place dans un environnement de test.

Étape 1

Mettons notre balise script et notre placeholder dans un formulaire :

1
<!DOCTYPE html>
2
<html lang="en">
3
  <head>
4
    <title>How to Integrate Google “No CAPTCHA reCAPTCHA” on Your Website</title>
5
  </head>
6
7
  <body>
8
9
    <form action="" method="post">
10
11
      <label for="name">Name:</label>
12
      <input name="name" required><br />
13
14
      <label for="email">Email:</label>
15
      <input name="email" type="email" required><br />
16
17
      <div class="g-recaptcha" data-sitekey="6LcePAATAAAAAGPRWgx90814DTjgt5sXnNbV5WaW"></div>
18
19
      <input type="submit" value="Submit" />
20
21
    </form>
22
23
    <!--js-->
24
    <script src='https://www.google.com/recaptcha/api.js'></script>
25
26
  </body>
27
</html>

Ici nous avons utilisé une structure de page classique avec un formulaire qui contient un champ name, un champ email et un bouton de soumission. Il n'y a pas le moindre style parce que ce n'est pas vraiment nécessaire dans le cadre de ce tutoriel.

our captcha formour captcha formour captcha form
Vous devez avoir quelque chose qui ressemble à ceci

Pour démontrer que le test reCAPTCHA a été un succès nous devons ajouter des controles coté serveur. Dans ce cas nous allons le faire en PHP, enregistrez ce fichier dans un nouveau projet en tant que index.php.

Étape 2

Vous avez remarqué que la méthode du formulaire est post, donc lorsque nous soumettrons le formulaire les valeurs seront retournées sur cette page dans un tableau. On peut afficher ces variables en itérant dessus, ajouter le code suivant dans votre page :

1
    <?php 
2
      foreach ($_POST as $key => $value) {
3
        echo '<p><strong>' . $key.':</strong> '.$value.'</p>';
4
      }
5
    ?>

Ce code affiche les paires de clé/valeur présentent dans le tableau $_POST avec un peu de formatage. Lorsque vous soumettez le formulaire vous devriez voir quelque chose que ça :

Vous voyez les valeurs pour name et email, mais aussi une valeur pour g-recaptcha-response. Si vous échouez au test CAPTCHA cette valeur sera vide, mais si vous avez coché la case "Je ne suis pas un robot" vous verrez une énorme chaine de caractères.

C'est cette valeur qu'il faut envoyer à Google pour qu'elle soit vérifiée, faisons le.

Étape 3

Heureusement, l'équipe de développement de Google a fait tout le travail pour nous, consultez le projet Github de ReCAPTCHA et obtenez une copie de la librairie recaptchalib.php. Placez le à la racine de votre projet et incluez le en haut de votre fichier index.php :

1
<?php
2
3
// grab recaptcha library

4
require_once "recaptchalib.php";
5
6
?>

Étape 4

Cette libraire contient une collection de fonctions qui envoie le g-recaptcha-response (ainsi que votre clé secrète) à Google via une requête HTTP. Puis elle recoit la réponse et vérifie si le CAPTCHA est valide ou non. Pour l'utiliser nous devons d'abord définir quelques variables avant la balise de fermeture de PHP :

1
// your secret key

2
$secret = "6LcePAATAAAAABjXaTsy7gwcbnbaF5XgJKwjSNwT";
3
4
// empty response

5
$response = null;
6
7
// check secret key

8
$reCaptcha = new ReCaptcha($secret);

ReCaptcha() vérifie si votre clé secrète est présente. Sinon elle arrète le processus et nous demande d'en obtenir une. Puis nous continuons avec :

1
// if submitted check response

2
if ($_POST["g-recaptcha-response"]) {
3
    $response = $reCaptcha->verifyResponse(
4
        $_SERVER["REMOTE_ADDR"],
5
        $_POST["g-recaptcha-response"]
6
    );
7
}

Étape 5

Supposons que tout a fonctionné pour notre formulaire, la variable $response retournera "success" et nous pouvons continuer à le traiter. Voici à quoi cela peut ressembler : supprimer la boucle d'affichage des données brutes et ajouter le contrôle suivant avant le formulaire :

1
    <?php
2
      if ($response != null && $response->success) {
3
        echo "Hi " . $_POST["name"] . " (" . $_POST["email"] . "), thanks for submitting the form!";
4
      } else {
5
    ?>

Enfin, ajouter une balise de fermeture de PHP après le formulaire :

1
<?php } ?>

Ce qui permet d'afficher le formulaire, tant qu'il n'a pas été soumis avec succès, auquel cas une notification de remerciement est affichée. La démonstration finale.

Conclusion

C'est une implémentation PHP rudimentaire de No CAPTCHA reCAPTCHA. Ce code est ouvert à toutes les améliorations mais vous fourni une bonne base qui couvre les fondamentaux. Nous devons la librairie à l'équipe de développement de Google et je voudrais remercier Matt Aussaguel pour me l'avoir montré.

Ressources utiles

Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new Web Design tutorials. Never miss out on learning about the next big thing.
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.