Réaliser un captcha simple

Réaliser un captcha simple

27 jan | Catégorie: PHP | Rédigé par François | 3737 lectures

Le but de ce tutorial va consister à l'élaboration d'un Captcha à l'aide du langage PHP, pour cela, on abordera dans ce tuto, les sessions et 2 ou 3 fonctions de la librairie GD qui permettent de générer des images dynamiquement.

Générer une image


Ce script est la base de cette petite fonctionnalité et permet de créer une valeur à coder qui est ensuite crypté en MD5 dans une session et permet de générer une image avec le code écrit. Enregistrez ce fichier en le nommant "cryptimage.php".

Réaliser le formulaire

Voici à quoi pourrait ressembler le formulaire à présent qui est dans le fichier "contact.php" :


Nous appelons notre script "cryptimage.php" directement à partir de la balise img, comme celle ci renvoie une image. Maintenant nous allons vérifier, si le formulaire a été validé, la valeur du champ $_POST['verif'] avec la variable de session $_SESSION['code']. Ce qui donne ceci:


Notez que l'initialisation de la session par la fonction session_start(); doit se faire au tout début de votre script. Cette subtilité est une source fréquente d'erreurs.

Si PHP et les sessions ne sont pas votre tasse de thé voici ce qui se passe lors de l'éxécution de ce script:
Captcha schéma

Notre script peut certainement être amélioré, et notamment du fait que des non-voyants ne pouront pas reconnaître la chaine. Aujourd'hui beaucoup de captcha sont maintenant accompagnés d'un extrait sonore pour eux.

Enfin, il pourra aussi être amélioré afin qu'il soit moins compréhensible pour un robot (ajout de lignes aléatoires, changement de couleurs, fond en dégradé, etc).

Creative Commons License
Cette création par Snoupix.com est mise à disposition selon les termes de la licence Creative Commons.
Partager ce tutoriel :
wikio scoopeo fuzz diggfr digg-design blogmemes delicious tapemoi yoolink bluegger pioche

11 Commentaires

gravatar
le 07 mars à 11h16 thvi Répondre Bonjour,

Le troisième listing de scripts s'insère dans le fichier contact.php ?

<?php // validation du formulaire ?>
<html>
<head>
</head>
<body>
<form>
</form>
<?php // traitement du formulaire ?>
</body>
</html>

Cordialement.
gravatar
le 07 mars à 13h46 François Répondre Oui, par contre tu dois faire ta verification du tableau d'erreurs avant l'affichage de la balise form histoire de mettre le message juste au dessus du formulaire, et si il est vide tu n'affiche pas le formulaire tout simplement et tu traites les données
gravatar
le 20 mars à 15h49 alain bashung Répondre c'est un peu l'arnaque, tu files pas les sources pour çui là!
gravatar
le 20 mars à 16h46 Francois Répondre Ah oui je devais pas connaitre à cette epoque! Sinon tout est dans les morceaux de code...
gravatar
le 02 mai à 03h42 Jasse29 Répondre Très utile, je vais pouvoir la combine que j'utilisais jusqu'à aujourd'hui
gravatar
le 07 juillet à 20h06 Robin Répondre Sa marcher chez vous?
gravatar
le 14 octobre à 10h57 B4rto Répondre Bonjour, j'ai un problème au nivo de la création du captcha:
en effet cette ligne fait planté mon mozzila, :
while(strlen($code) != 4){

$code .= $liste[rand(0,strlen($liste))];
Deja la page met 3 ans a charger et en après, sa me dit que la variable liste n'est pas définit ce qui est plutot vrai.
Notice: Undefined variable: liste in C:\Program Files\wamp\www\\cryptimage.php on line 13

Donc j'ai test en métant la variable $caracteres qui me parraisait plus logique et la sa me renvoi l'url de la page ou je me trouve à savoir.
http://localhost/www/index.php?p=cryptimage

Donc je pige pas trop.
gravatar
le 16 octobre à 22h20 François Répondre Salut!!!Tout d'abord si il y'a un problème dans le code, cela ne fera pas planté ton navigateur mais seulement ton serveur (boucle infinie apparemment)

Apparemment ta chaine ne se crée pas vraiment

vérifie que tu as bien ta variable $liste="tescaracteresabcdefgh...12345..";


Sinon ton adresse localhost personne ne peut y accéder à par toi wink
gravatar
le 04 novembre à 17h14 Sexy Lady Répondre Bonjour,

Avant tout merci pour ce partage de code.

Maintenant, j'ai des doutes pour l'implanter...
Est ce que le code est fiable ou a été réparé depuis cette fameuse boucle infinie ?

Je vous remercie d'avance pour une réponse
gravatar
le 29 novembre à 13h17 HPWEST Répondre Bonjour!!! actuellement embeter sur mon site avec des robots, j'ai trouver sur votre site ce tuto mais malheureusement je n'arrive pas a l'installer. pouvez-vous m'aider a y voir un peu clair pour que je puisse installer ce Captcha.

merci à vous amicalement.
gravatar
le 30 mars à 11h59 jhice Répondre Il y a un bug dans le code :

$caracteres = $liste !

donc pour ceux qui seraient bloqués ici, ligne 5, remplacer

$caracteres = "34589ABCDEFHKMNPQRTWXYZ";
par :
$liste = "34589ABCDEFHKMNPQRTWXYZ";

Requête en cours, veuillez patienter...

Ajouter un commentaire