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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
| <?php
/*
* script fait avec l'aide de http://jmhoule314.blogspot.com/2006/05/easy-php-captcha-tutorial-today-im.html
*
*/
session_start();
$strlength = 5; //longueur variable de 4
//pour chaque char, on cherche une lettre au hazard
for($i=1;$i<=$strlength;$i++){
$textornumber = rand(1,2);
if($textornumber == 1)
$codeImg .= chr(rand(65,74));
if($textornumber == 2)
$codeImg .= chr(rand(75,90));
}
//image vide de taille 200,50
$image = imageCreate(170,35);
//on assigne la couleur de fond (blanc)
$backcolor = imageColorAllocate($image, 255, 255, 255);
//puis la couleur du texte
$txtcolor = imageColorAllocate($image, 255, 60, 0);
//on met les lettres dans l'image avec une inclinaison avec une taille aléatoire
for($i=1;$i<=$strlength;$i++)
{
$clockorcounter = rand(1,2);
if ($clockorcounter == 1)
{
$rotangle = rand(0,45);
}
if ($clockorcounter == 2)
{
$rotangle = rand(315,360);
}
//taile de la lettre entre 14 et 20, et 25 d'espacement entre les lettres
imagettftext($image,rand(14,20),$rotangle,($i*25),30,$txtcolor,"/arial.ttf",substr($codeImg,($i-1),1));
}
//en theorie on a fini, mais ce serrai trop facile pour les robots.
//Il faut rajouters des elypse ou autre signe pour que les lettres soient moins facilent trouvé
//
imageellipse($image,rand(1,170),rand(1,35),rand(50,90),rand(8,17),$txtcolor);
for($i=1; $i<=4;$i++)
{
imageline($image,rand(10,155),rand(5,28),rand(1,170),rand(1,35),$backcolor);
}
for($i=1;$i<=2;$i++){
imageellipse($image,rand(1,170),rand(1,35),rand(50,90),rand(8,17),$backcolor);
}
for($i=1;$i<=2;$i++){
imageline($image,rand(12,155),rand(1,35),rand(1,170),rand(1,35),$txtcolor);
}
//en envoie le header pour dire que notre fichier est une image
header('Content-type: image/png');
//et en renvoie notre image fabriqué au format png
imagePNG($image);
//on efface l'image de la memoire
imageDestroy($image);
//et la je retiens mon image en variable de session
$_SESSION['codeImg'] = $codeImg;
?> |
Partager