Que faut-il connaître avant de commencer ?
-les bases du PHP et rien de plus.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.
<?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
?>
<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.
< ?
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 !';
}
?>