Du coté PHP

Information sur l'article

Ecrit par phpSources
Date d'enregistrement de l'article le 19 Nov 2008
Impression: Imprimer l'article
Pas encore
de vote
 

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

Poster un commentaire

:P :)
:wink: :lol:
:surprised: :confused:
:idea: :no:
Taille du texte:
Couleur:
 
Code de sécurité
Offres d'emploi

Déposer vos articles

Déposer vos articles

Nous accueillons avec plaisir les articles et les critiques de livres, et nous encourageons les entreprises à contribuer avec les rapports d'industrie sur l'utilisation avantageuse de PHP. Vous pouvez également soumettre des articles de journaux et les publications de la presse professionnelle telles que les annonces de produits, et nous serons heureux de les publier sur notre site.

Contactez-nous