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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| <?php
session_start();
$length = 5; // Longueur de la chaîne générée en image
$string = '';
for($i = 0; $i < $length; $i++) //Création de la chaine qui sera affichée
{
$string .= chr(mt_rand(97, 122)); //Récupération aléatoire d'un caractères alphabétique minuscule
}
// Création de la zone image en fonction de la longueur de texte à afficher
$image = imagecreatetruecolor(30 * $length, 50);
// Création du fond de l'image
for($x = 0; $x < imagesx($image); ++$x)
{
for($y = 0; $y < imagesy($image); ++$y)
{
if (mt_rand(1,5) == 4 )
{
$vred = mt_rand(0, 100);
$vgreen = mt_rand(0, 100);
$vblue = mt_rand(0, 100);
}
else
{
$vred = mt_rand(100, 150);
$vgreen = mt_rand(100, 150);
$vblue = mt_rand(100, 150);
}
// Allocation d'une couleur au fond
$color = imagecolorallocate($image, $vred, $vgreen, $vblue);
// Affichage d'un pixel ayant la couleur du fond
imagesetpixel($image, $x, $y, $color);
// Suppression de la couleur du fond allouée
imagecolordeallocate($image, $color);
}
}
// Création de la bordure
$vred = mt_rand(0, 240);
$vgreen = mt_rand(0, 240);
$vblue = mt_rand(0, 240);
// Allocation d'une couleur à la bordure
$color = imagecolorallocate($image, $vred, $vgreen, $vblue);
// Tracé de la bordure
imagerectangle($image, 0, 0, imagesx($image)-1 , imagesy($image)-1, $color);
// Suppression la couleur de la bordure allouée
imagecolordeallocate($image, $color);
// Création du texte
for($i = 0; $i < $length; $i++)
{
$vred = mt_rand(150, 240);
$vgreen = mt_rand(150, 240);
$vblue = mt_rand(150, 240);
$size = mt_rand(20, 30);
$angle = mt_rand(-10, 20);
$x = 13 + (20 * $i);
$y = mt_rand(30, imagesy($image) - 10);
$color = imagecolorallocate($image, $vred, $vgreen, $vblue);
$font = './font/posthuman.ttf';
// Dessin du texte
imagettftext($image, $size, $angle, $x, $y, $color, $font, $string[$i]);
// Suppression de la couleur du texte allouée
imagecolordeallocate($image, $color);
}
//Enregistrement en session du captcha
$_SESSION['captcha-text'] = $string;
// Création de l'image complète au format PNG
header("Content-type: image/png");
//Envoi de l'image
imagepng($image);
?> |
Partager