Pages Menu

Posted by on 07 / 04 / 2009 in PHP-MySQL | 0 comments

PHP: come creare una immagine captcha

PHP: come creare una immagine captcha

captcha
Ecco come creare un semplice sistema CAPTCHA in PHP. Il captcha è spesso utilizzato come sistema anti-spam nei moduli di richiesta informazioni, form di registrazione e pagine di accesso tramite utente e password.
Non posso non ricordare che, soprattutto in questo ultimo anno, sono usciti sul web alcuni articoli e codici che permettono (solo in alcuni casi!) di riconosce i caratteri presenti all’interno di una immagine captcha (OCR), ma tratteremo questo argomento nei prossimi articoli…
Qui riportato il codice sorgente, inseritelo all’interno di un file .php, uplodate nella stessa directory il font (in questo esempio ‘alba.ttf’) ed ecco pronta la vostra immagine captcha.

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
header("Content-type: image/png");
for($i=0;$i<6;$i++) // sei cifre
{
$rand = rand(65, 90);
$code .= chr($rand);
}
$code = substr($code,0,9);
$x = 200;
$y = 75;
$space = $x / (strlen($code)+1);
$img = imagecreatetruecolor($x,$y);
$bg = imagecolorallocate($img,255,255,255);
$border = imagecolorallocate($img,0,0,0);
$colors[] = imagecolorallocate($img,128,64,192);
$colors[] = imagecolorallocate($img,192,64,128);
$colors[] = imagecolorallocate($img,108,192,64);
imagefilledrectangle($img,1,1,$x-2,$y-2,$bg);
imagerectangle($img,0,0,$x-1,$y-2,$border);
for ($i=0; $i< strlen ($code); $i++)
{
$color = $colors[$i % count($colors)];
imagettftext($img,28+rand(0,8),-20+rand(0,40),($i+0.3)*$space,50+rand(0,10),$color,'alba.ttf',$code{$i});
}
for($i=0;$i<400;$i++)
{
$x1 = rand(3,$x-3);
$y1 = rand(3,$y-3);
$x2 = $x1-2-rand(0,8);
$y2 = $y1-2-rand(0,8);
imageline($img,$x1,$y1,$x2,$y2,$colors[rand(0,count($colors)-1)]);
}
imagepng($img);

0 Comments

Trackbacks/Pingbacks

  1. WebNet » Captcha Decoder: decodificare immagini captcha - [...] captcha, immagini Categoria : Info Varie In un mio precedente post avevo spiegato…

Post a Reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *