Vous avez déjà sûrement rencontré sur le web ces petites images servant à freiner voir à stopper l'activité des spam.
Étant parfois difficile à déchiffrer (manque d'accessibilité) les captcha restent tout de même un excellent moyen de se protéger du spam même si, comme toute sécurité informatique, ils ne sont pas fiables à 100%.
De plus en plus présent sur les sites web, ce nouveau moyen de protection tend à devenir une référence en matière de protection anti-spam.
Il actuellement possible d'équiper son site internet d'un captcha assez facilement grâce à des plugins.
Il peut être cependant utile de savoir les faire soi-même pour une raison d'ergonomie (taille du captcha) ou de design par exemple .
Voici donc un tutorial pour tous ceux et celles qui désirent réaliser leur propre captcha.
Une bonne connaissance en php sont requis pour la compréhension de ce tuto
- Étape 1- Vérifier que la libraire GD est bien installée et activée sur votre serveur
- Code: Tout sélectionner
<?php
phpinfo();
?>- Code: Tout sélectionner
<?php
// on démarre la session php et on y stocke un texte aléatoire
session_start();
// on cree un fonction qui génera un texte aléatoire
function random($car) {
$string = "";
$chaine = "abcdefghijklmnpqrstuvwxy0123456789";
srand((double)microtime()*1000000);
for($i=0; $i<$car; $i++) {
$string .= $chaine[rand()%strlen($chaine)];
}
return $string;
}
// APPEL
// Génère une chaine de longueur 5
$chaine = random(5);
$_SESSION['captcha'] = $chaine; // on enregistre le texte dans la session pour pouvoir vérifier la saisie de l'utilisateur
// création d'une image avec un fond préalablement créer
$rnd = rand(1, 4); // on determine ici le nombre de fond qu'on a crée et on en choisi un au hazard avec la fonction php rand
$img = imagecreatefrompng("./captcha".$rnd.".png"); //creation de l'image avec notre fond
// choix d'une couleur pour le texte et d'un font
// puis on inscrit le texte stocké dans la session dans l'image en utilisant la couleur et la font définie
$text_color=imagecolorallocate($img,252,252,252); // couleur de votre texte
$font = 'font/KISSMKMK.TTF'; // chemin de la police du texte
imagettftext($img, 23, 0, 5, 30, $text_color, $font,$_SESSION['captcha']); // image finale
//affichage de l'image composé
imagejpeg($img);
imagedestroy($img);
?>- Code: Tout sélectionner
<img src="captcha.php" />- Code: Tout sélectionner
<?php
session_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Demo captcha</title>
</head>
<body>
<form method="POST" action="">
<h3>Quel est ce chiffre ?</h3>
<img src="captcha.php" /><br />
<input type="text" name="captcha" style="width:70px"/><br />
<input type="submit" />
</form>
<?php
if($_POST['captcha'])
{
if($_POST['captcha']==$_SESSION['captcha'])
{
echo 'Code correct';
}
else
{
echo 'Erreur, Votre saisie ne correspond pas au captcha. Veuillez recommencer';
}
}
?>
</body>
</html>
Dans la majorité des cas la librairie GD est nativement mise en place sur votre serveur
Cependant pour vérifiez, créer un fichier phpinfo.php que vous placerez sur votre serveur avec ce petit script
Ouvrez ce fichier depuis votre navigateur et chercher la ligne suivante
"GD Support enabled "
Cela signifie que la librairie GD est bien activée sur votre serveur
Étape 2-Création des fonds du captcha
Afin de rendre notre captcha plus performant, il est judicieux de faire varier l'image de fond
Créer donc 4 à 5 images ( ou plus ) sous photoshop par exemple qui serviront de fond à notre captcha.
Utiliser des dégradés , des motifs ou des texture afin de créer des fonds difficilement lisibles.
Ne pas non plus tomber dans un excès , le captcha doit rester lisible pour un humain.
Donner des noms à ces images : captcha1.png , captcha2.png ...ect
Étape 3- On crée l'image avec un texte aléatoire et les images que l'on vient de créer
Le but est de réaliser une image captcha dans lequel on affiche un texte aléatoire qu'on stockera dans une session php. On utilise la valeur de cette session dans la vérification du formulaire pour tester si la saisie de l'utilisateur correspond au captcha.
Créer un fichier captcha.php, c'est dans ce fichier que l'on va crée l'image captcha.
3- Mise en place du formulaire
Ici on va appeler l'image captcha générer par le script précédent par ce code
puis on met en place un formulaire html simple avec un champ demandant de recopier le mot du captcha.
Ensuite on mettra en place une vérification qui comparera la saisie de l'utilisateur à la valeur de la session captcha
Si les deux valeurs sont identiques on valide sinon cela veut dire que l'utilisateur s'est trompé dans la saisie et qu'il a mal recopié le texte du captcha.
Ce qui donne
formulaire.php
Étape 4- Et c'est tout !
Il est donc assez simple de réaliser sa propre image captcha.
Cela permet une configuration totale sur votre captcha (taille, couleur, image de fond, police ect...).
Vous pouvez par exemple réaliser un captcha avec un design qui s'accorde au design de votre site ce qui n'est souvent pas le cas avec l'utilisation de plugins captcha.
Bien entendu il est tout a fait possible de rendre ce captcha plus performant, libre à vous de faire comme bon vous semble.
Comme à l'accoutumée ne pas hésiter pour toute remarque ou question.
