Installer une Captcha sur votre site PARTIE 1
Du coté PHP
|
|
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 :
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($image, mt_rand(200,255),mt_rand(200,255),mt_rand(200,255))); } ?> |
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($liste, rand(0, strlen($liste)-1), 1); $x += 10 + mt_rand(0,10); imagechar($image, mt_rand(3,5), $x, mt_rand(5,20), $charactere, imagecolorallocate($image, mt_rand(0,155), mt_rand(0,155), mt_rand(0,155))); $code .= strtolower($charactere); } ?> |
|
.01 .02 .03 .04 .05 .06 .07 .08 .09 .10 |
<?php header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); $_SESSION['securecode'] = $code; ?> |
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
Quelques articles qui devraient vous intéresser










Connexion
Les derniers!

