Vous êtes ici Articles > Installer une Captcha sur votre site PARTIE 1

 

Installer une Captcha sur votre site PARTIE 1

Du coté PHP
 
phpSources
Vu 5723 fois
Enregistré le 19 Nov 2008
  • Digg cet article sur digg.com
  • Bookmark cet article sur del.icio.us
  • Bookmark cet article sur Google
  • Bookmark cet article sur Yahoo
  • Ajoute Installer une Captcha sur votre site PARTIE 1
  • Partage cet article sur Facebook
 
 
 
 

Installer une Captcha sur votre site PARTIE 1


Dans cet article nous allons vous montrer comment créer une image Captcha pour protéger le traitement de vos formulaires d’inscription.

Aujourd'hui, les spammeurs créent de plus en plus de difficultés aux administrateurs de sites lorsqu'ils envoient des spams à des forums, des livres d'or, des formulaires d'inscription et ainsi de suite. Pour nous protéger contre les robots spammeurs, une bonne solution consiste à ajouter une image Captcha à nos formulaires. Cette image contient un code de sécurité qui est uniquement lisible pour l'homme et non par des robots.
Dans cet article nous allons vous montrer comment vous pouvez générer avec PHP de telles images très rapidement et comment les intégrer dans votre propre formulaire. Tout d'abord, nous allons diviser la tâche en 2 parties :

• Nous avons besoin d'un code PHP qui génère une image avec un code aléatoire
• Nous avons besoin d'un formulaire où nous vérifions le code de sécurité en cours de traitement

Commençons donc avec la création de l'image. Si vous y réfléchissez un peu, nous avons à remplir les conditions suivantes :

• Un code généré de façon aléatoire.
• Une image de fond de page avec bruit générée de manière aléatoire.
• Des caractères positionnés de façon aléatoire

Tout d'abord créons une image de fond. Vous pouvez la créer à l'aide de la fonction imagecreate et utiliser la largeur et la hauteur en tant que paramètres. Ceci est très simple:

$largeur = 120;
$hauteur = 40;
$image = @imagecreate($largeur, $hauteur) or die('Impossible d\'initializer GD');

Ensuite, nous allons ajouter des lignes sillonnant l’arrière-plan. Si vous augmentez le nombre d’exécutions, l'arrière-plan sera plus complexe. Pour exécuter cette tâche, nous pouvons utiliser la fonction Imageline qui dessine une ligne des points Ax, Ay aux points Bx, By avec une couleur C. De façon à ce que le résultat soit à chaque fois différent, toutes les coordonnées sont générées avec les fonctions mt_rand . La couleur est créée avec la fonction imagecolorallocate :
.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
 
<?php

for( $i=0$i<10$i++ ) {
   imageline($image,
   mt_rand(0,$largeur), mt_rand(0,$hauteur),
   mt_rand(0,$largeur), mt_rand(0,$hauteur),
   imagecolorallocate($imagemt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
 }

?>

Il est maintenant temps d'ajouter un code de sécurité aléatoire à l'image. Pour ce faire, nous allons d'abord créer une variable qui contient tous les caractères disponibles. Ensuite nous sélectionnerons au hasard ces caractères, un par un, à partir de cette chaîne.
Pour ajouter un caractère à l'image nous utiliserons la fonction imagechar. Toutefois, afin de rendre notre image Captcha plus complexe, le positionnement du caractère se fera de nouveau au hasard.
De plus, le caractère sélectionné est enregistré dans une autre variable qui sera utilisée plus tard. Le code PHP pour cette tâche ressemble à ceci :

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
.11
.12
.13
 
<?php

$liste '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
for( $i=0$x=0$i<$longueur$i++ ) {
   $charactere substr($listerand(0strlen($liste)-1), 1);
   $x += 10 mt_rand(0,10);
   imagechar($imagemt_rand(3,5), $xmt_rand(5,20), $charactere,
   imagecolorallocate($imagemt_rand(0,155), mt_rand(0,155), mt_rand(0,155)));
   $code .= strtolower($charactere);
 }

?>

Finalement, nous créons l'image et l'envoyons au navigateur qui l’affiche:

.01
.02
.03
.04
.05
.06
.07
.08
.09
.10
 
<?php

  header('Content-Type: image/jpeg');
  imagejpeg($image);
  imagedestroy($image);

  $_SESSION['securecode'] = $code;

?>

La dernière étape consiste à mémoriser les caractères ainsi recueillis en un code qui servira de variable de session. Ensuite, pendant le traitement du formulaire c’est cette variable qui sera utilisée

Vous trouverez le code complet du générateur d'image Captcha dans le module code Snipets et la suite de l'article dans la deuxième partie:

PARTIE 2
VOIR LE CODE COMPLET

Ajouter un commentaire
Code de sécurité

Attention: Les champs marqués d'une étoile * sont obligatoires
 
Quelques articles qui devraient vous intéresser