Webmaster Hub - Format normal - Les publications

script PHP

Générer des images aléatoires contenant du texte.

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.