Créer une image de validation
Vous souhaitez faire une image de validation pour votre site pour vous prémunir du spam et des inscriptions automatiques par des robots? Ce script va faire votre bonheur.

Que faut-il connaître avant de commencer ?

-les bases du PHP et rien de plus.

Dans ce script, nous allons utiliser la librairie GD.

Qu'est-ce que la librairie GD ?

C'est une librairie qui permet de créer des images en PHP. Actuellement, presque tous hébergeurs en disposent; vous n'avez donc pas à vous inquièter si vous pouvez ou pas créer cette image.

Le script


Pour le script, vous devez télécharger cette image que vous appellerez "validation.png". Le script que nous allons créer va sélectionner 6 chiffres aléatoirement et les mettre sur l'image de fond. Vous n'aurez donc plus qu'à l'afficher. Réalisons maintenant une page nommée "script_verifcation.php".
Voici le code à y mettre :

<?php
session_start(); /*on crée une variable session pour pouvoir stocker le code de vérification et l'utiliser sur
d'autres pages*/


$nombre_chiffre = 6; // Le code sera formé de 6 chiffres.
header('Content-type: image/png');
//on transforme la page en image de type PNG

$image_v = imagecreatefrompng('validation.png');
//on récupère l'image de validation.png comme arrière-plan

$background = imagecolorallocate($image_v, 0, 0, 0);
//si jamais il y a un bug, on met une couleur de fond noir

$color_code = imagecolorallocate($image_v, 255, 255, 255);
//les chiffres seront écrit en blanc

//------------------
/*changement d'étape.  On passe à la sélection aléatoire du code*/
/*Maintenant, on sélectionne des chiffres aléatoirement et on les stocke dans un array.*/

$i = 0;
while($i < $nombre_chiffre) {
        $selection = mt_rand(0, 9); // on génère le nombre aléatoire
        $stockage[$i] = $selection;
        $i++;
}
/*Tant que la variable $i est inférieure au nombre de chiffres chosit, on en sélectionne un aléatoirement
entre 0 et 9 et on le place dans un tableau.*/


$code = null;
/*La variable code est définie comme nulle car elle sera remplie par la boucle.*/

foreach ($stockage as $nombre){
        $code .=$nombre;
}
/*foreach est une boucle un peu particulière qui s'exécutera tant que l'array n'est pas vide et qui stocke les
chiffres dans une variable appellée $code*/


$_SESSION['code_validation'] = $code;
/*On place le code généré aléatoirement dans une variable SESSION pour pouvoir l'utiliser sur d'autres page
pour vérifier si le code entré est correct.*/


unset($i);
unset($selection);
unset($nombre);
unset($stockage);
/*On détruit toutes les variables utilisées ainsi que la variable qui a un moment contenu le code par mesure
de sécurité*/


imagestring($image_v, 5, 18, 8, $code, $color_code);
//Les nombres servent à déterminer la position du code

unset($code);
//Desctruction de la variable $code, devenue inutile.

imagepng($image_v);
//On crée l'image de validation
?>

Voilà, l'image de validation est créée. Dans le formulaire, vous rajoutez simplement cette ligne :

<img src="script_verification.php" alt="code" />
Merci de retaper le code :
<input type="text" name="code_verification" />.

Mais pourquoi as-tu comme lien d'image la page PHP et pas le fichier png?

Parce que dans le fichier png, il n'y a que le fond et pas le code de validation. Quand j'insère un lien d'image vers une page PHP, le serveur va voir la page, crée l'image et la renvoie au client qui n'a plus qu'à l'afficher.

Dans la page de validation du formulaire, il faudra placer ce code :

< ?
session_start();
/*On ouvre la session au tout début de la page pour pouvoir vérifier si le code tapé est juste (le code
est contenu dans un variable SESSION)*/


echo'<html><head><title>Validation</title><head><body>';
//On écrit l'en-tête

if(isset($_POST['code_verification']==$_SESSION['code_ validation']){
// Si le code est juste, affichez ici tout ce qu'il faut faire.
echo'Code valide';
}
else{ // Si le code est faux
echo'Le code de validation est faux. Merci de réessayer !';
<a href="#" onclick="history-go(-1);">Retour</a>';
}
// on est gentil, on fait un lien pour revenir en arrière
}
else{ // si le code est vide ou n'
existe pas
 echo'Vous devez remplir tous les champs !';
}
?>

Vous avez maintenant un magnifique code de validation à 6 chiffres pour votre site.
Adieu le spam dans vos formulaires!!


Creative Commons License
Sauf mention contraire, le contenu de cette page est sous licence Creative Commons
Page générée en 0.3594 secondes.
Retour en haut de la page
Imprimer cette page