Webmaster Hub - Format normal - Les publications
25 octobre 2003
par Scarabeuz
Les publications de Webmaster Hub
http://www.webmaster-hub.com/publication/Generer-des-images-aleatoires.html
Le principe est simple, d’un côté une fonction qui génère un nombre, et de l’autre un script qui récupère ce nombre et crée une image grâce à la librairie GD de php.
Aller hop c’est parti...
On commence par créer la fonction cle() ; dans le fichier index.php
function cle() {
//nombre de chiffres total
$taille = 5;
//chaîne utilisée, on peut rajouter des lettres
$chiffre = "123456789";
srand(time());
for ($i=0;$i<$taille;$i++)
{
//on mélange le tout
$key.=substr($chiffre,(rand()%(strlen($chiffre))),1);
}
return($key);
}Ensuite une fois que l’on a récuperé le numéro on peut créer une image. Ce script doit être inséré dans une page à part ( ex : gencode.php )
header ("Content-type: image/jpeg");
// Ici on choisit la hauteur par ex 80*20
$im = imagecreate (80,20) or die ("Problème de création GD");
// Choix des couleurs ici ça donne du Gris
$background_color = imagecolorallocate ($im, 238, 238, 238);
// Choix de la couleur de la police, ici Noir
$ecriture_color = imagecolorallocate ($im, 0, 0, 0);
//on récupère le texte généré du formulaire
imagestring ($im, 10, 18, 6, $_GET['code'] , $ecriture_color);
imagejpeg($im);Maintenant on applique la formule magique.
Toujours dans le fichier index.php sous la fonction cle(), on ajoute un formulaire :
$code = cle();
<form name="form" method="post" action="verification.php">
<input name="verifCode" type="text" class="input0" id="verifCode" maxlength="5">
<input type="hidden" name="verifCode2" value=<? echo $code; ?>>
<input type="hidden" name="action" value="submit">
<IMG src="gencode.php?code=<? echo $code; ?>">
</form>
$code = cle() va créer à chaque chargement de la page un "Nombre" qui sera stocké dans la variable $code.
En même temps, ce code sera envoyé vers notre fichier gencode.php pour créer une image et l’insérer par la même occasion.
Ensuite dans notre fichier verification.php on contrôle les résultats :
if (($action == "submit") && ($_POST['verifCode'] == $_POST['verifCode2']))
{ echo "Le code est bon"; } else "Veuillez retourner sur le formulaire et entrer le bon Code !"; Et voilà vous allez pouvoir limiter les soumissions dans votre annuaire.
Des suggestions, des remarques, des questions ? Venez en discuter sur le forum PHP.