Blog de Portekoi : Programmation et Astuces

Programmation Cobol, Php, Asp, Java et DotNet…

Captcha simple mais efficace en PHP

Le pourquoi du comment :

Sur certains de mes sites, j’utilisais un captcha sous cette forme :

Combien font 1 + 3?

Mais les robots trouvaient parfois la bonne réponse sachant que cela n’était que des chiffres entre 1 et 18 maximum.

J’ai donc recréé un autre système plus performant composé de deux parties : La lettre dans un mot choisit de manière aléatoire et la présence d’un champ hidden « piégé »(1).
Pour la première solution, on le voit assez souvent sur le web et je trouve cela assez efficace mais j’ai préféré doubler la sécurité avec un champ caché.

Cela nous donnera donc ceci :

Quelle est la 2ième lettre du mot : Ordinateur

Pour pouvoir valider le formulaire, il faudra bien évidemment répondre « r ».

Comment cela fonctionne-t-il?

Tout d’abord, dans votre formulaire, placez un champ piégé (comme ci-dessous) bien nommé comme « email » ou « login » par exemple. Les robots raffolent de ce genre de données.
Ensuite, dans le script qui contrôlera les données, il suffira de vérifier que le champ « email » (ou « login ») soit bien vide.
S’il devait être saisi, c’est qu’un robot sera à l’origine de la requête.

Ensuite, pour le contrôle via une lettre, j’ai d’abord recherché un site me permettant d’obtenir une liste de mots conséquente. J’ai trouvé celui-ci :
http://www.liste-de-mots.com/

J’ai ensuite récupéré ma liste de mots et tout placé dans un fichier texte avec un encodage en UTF-8. Ce point est très important.

Voici le code php pour récupérer le mot et déterminer une lettre de manière aléatoire :


Le code HTML (via Bootstrap 3) :









La source complète est ici : http://blog.portekoi.com/exemple/captcha/

Le fichier contenant les mots :
http://blog.portekoi.com/exemple/captcha/fichier.txt

(1)Champ caché détaillé ici : http://www.fredboucher.com/posts/view/un-captcha-infaillible-

, ,

Les commentaires sont fermés.