Bonjour tout le monde,
J'ai écrit un script (test.php) pour générer un code aléatoire qui s'affiche dans une image afin d'empêcher des robots de s'inscrire dans un espace membres.
Dans un premier temps je génère un code aléatoire, puis je le crypte avec la fonction mycrypt.
Après cela j'affiche l'image générée par un autre script (image.php) en lui passant en paramètres le code crypté. Ce script va décrypter le code transmis en paramètres en utilisant la clé qu'il a en commun avec le premier script.
Cela marche, mais de temps en temps (1 fois sur dix ou 1 fois sur vingt) au lieu d'avoir mon code généré j'ai sur mon image une chaîne de caractères qui n'a rien à voir avec mon code généré.
Je ne comprends pas d'où vient cette erreur.
Pourriez vous m'aider?
le lien vers le script en ligne :
http://brumespourpres.online.fr/test.php
Le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 test.php <?php srand((float)microtime()*1000000); $longueurTexte = 12; $caracteres = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "j", "k", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F","G", "H", "J", "K", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"); $compteur = 1; $texte = ""; while ($compteur <= $longueurTexte) { $texte = $texte . $caracteres[rand(0,count($caracteres)-1)]; $compteur = $compteur+1; } $iv = mcrypt_create_iv(mcrypt_get_iv_size (MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND); $clee = "secret"; $texteCrypte = mcrypt_encrypt (MCRYPT_RIJNDAEL_256, $clee, $texte, MCRYPT_MODE_ECB, $iv); echo "<html><header></header><body>"; echo $texte; echo "<br>"; echo "<img src=./image.php?texteImage=" . addslashes(urlencode(serialize($texteCrypte))) . "&iv=" . addslashes(urlencode(serialize($iv))) . ">"; echo "<br>"; echo "</body></html>"; ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 image.php <?php $clee = "secret"; $texteCrypte = unserialize(urldecode(stripslashes($_GET['texteImage']))); $iv = unserialize(urldecode(stripslashes($_GET['iv']))); $texteDecrypte = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $clee, $texteCrypte, MCRYPT_MODE_ECB, $iv); $texteDecrypte = trim($texteDecrypte); $longueurTexte = strlen($texteDecrypte); $tailleTexte = 30; $largeurImage = $longueurTexte * $tailleTexte + 100; $hauteurImage = $tailleTexte + 40; $policeTexteImage = "./arial.ttf"; $image = ImageCreateTrueColor($largeurImage, $hauteurImage); $couleur1 = ImageColorAllocate($image, 255, 255, 0); $couleur2 = ImageColorAllocate($image, 255, 0, 0); ImageTTFText($image, $tailleTexte, 0, ($largeurImage - $tailleTexte * $longueurTexte) / 2 , ($hauteurImage - $tailleTexte) / 2 + $tailleTexte, $couleur2, $policeTexteImage, $texteDecrypte); Header("Content-type: image/png"); ImagePNG($image); ImageDestroy($image); ?>
Partager