-
Notifications
You must be signed in to change notification settings - Fork 0
/
captcha.php
62 lines (44 loc) · 1.56 KB
/
captcha.php
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
<?php
session_start();
header("Content-Type: image/png");
$image = imagecreate(200,50);
$length = 7;
$back = imagecolorallocate($image, rand(0,100), rand(0,100), rand(0,100));
$charAuthorized = "abcdefghijklmnpqrstuvwxyz123456789";
$charAuthorized = str_shuffle($charAuthorized);
$captcha = substr($charAuthorized, 0, $length);
$_SESSION["captcha"] = $captcha;
$fontfile = glob("font/*.ttf");
$x = rand(5,10);
$y = rand(25,40);
for($i=0;$i<strlen($captcha);$i++){
$size = rand(20, 25);
$angle = rand(-25, 25);
$colors[] = imagecolorallocate($image, rand(150,250), rand(150,250), rand(150,250));
imagettftext($image, $size, $angle, $x, $y, $colors[$i], $fontfile[rand(0,count($fontfile)-1)] , $captcha[$i]);
$x += rand(20, 30) ;
$y = rand(20, 45) ;
}
for($i=0; $i<rand(2, 5); $i++ ){
$j = rand(0,2);
switch ($j) {
case 0:
imageline($image, rand(0, 200), rand(0, 50), rand(0, 200), rand(0, 50), $colors[rand(0,count($colors)-1)]);
break;
case 1:
imagerectangle($image, rand(0, 200), rand(0, 50), rand(0, 200), rand(0, 50), $colors[rand(0,count($colors)-1)]);
break;
default:
imageellipse($image, rand(0, 200), rand(0, 50), rand(0, 100), rand(0, 100), $colors[rand(0,count($colors)-1)]);
break;
}
}
imagepng($image);
/*
Modifier la police d'écriture aléatoire (parmis une liste) par caractère
Positionnement et inclinaison aléatoires par lettre
lettre et chiffre aléatoires
couleur aléatoire par lettre
générer aléatoirement des formes géométriques (ligne, carré, rond, ....) de couleurs aléatoires par dessus
Visible et lisible
*/