суббота, 10 июля 2010 г.

красивая капча на gd

Както достаточна давно писал скрипт капчи... вот собственно он. Если появиться вопросы пишите.
В принципе он достаточно просто, минимальные знания php что бы разобраться в этом маленьком коде

<?php
/////////////////////////////////////////
// By Dragor ////////////////////////////
// Блог http://dragor-ww.blogspot.com/ //
/////////////////////////////////////////
// Настройки ////////////////////////////
/////////////////////////////////////////
//переменая !! $kapcha2 !! хранит реалный набр букв
$coll = 16; // количесво букв
$ugol_max = 70; // максемалный угол наклона букв
$len = 16; // растояние между буквами
$shr_max = 20; // максемальный размер шрифта
$shr_min = 9; //минимальный размер шрифта
$otvet = 0; // выводить ли в картинку ответ (0, 1)
// ///////////////////////////////////
$array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 0, q, w, e, r, t, y, u, i, i, o, p, a, s, d, f, g, h, j, k, l, z, x, c, v, b, n, m);
for ($a=0;$a<$coll;$a++) {
$array_rand = array_rand($array,1);
$rand = $array[$array_rand];
$kapcha .=  $rand.'.';
$kapcha2 .=  $rand;
}
$text = explode('.', $kapcha);
header("Content-type: image/gif");
$dlin = $coll * $len;
$img = imagecreate($dlin, 40);
$black = imagecolorallocate($img, 0, 0, 0);
for ($b=0;$b<$coll;$b++) {
$as += 15;
$ygol = rand(0, $ugol_max);
$shr = rand($shr_min, $shr_max);
$color = imagecolorallocate($img, rand(100, 255), rand(100, 255), rand(100, 255));
imagettftext($img, $shr, $ygol, $as, 25, $color, "ARIALUNI.TTF", "$text[$b]");
}
if ($otvet == 1) {
imagettftext($img, 14, 0, 14, 40, $color, "ARIALUNI.TTF", "$kapcha2");
}
imagegif($img);
imagedestroy($img);
?>
 

Комментариев нет:

Отправить комментарий