Капча

vital

Больной Компом Детектед
29.01.2006
2 432
33
#1
Вам тоже не нравится эта мудреная ReCaptcha, но защита нужна? Выкладываю хороший модуль. Стырил где-то в нете, да простит меня автор, но не помню где.
<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">captcha.php</div></div><div class="sp-body"><div class="sp-content">
PHP:
<?php

session_start();


$width = 100;
$height = 40;
$font_size = 12;
$let_amount = 5;
$back_let_amount = 30;
$path_fonts = 'fonts/';

$letters = array(
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'm',
'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',
'z', '2', '3', '4', '5', '6', '7', '9'
);

$colors = array('10', '30', '50', '70', '90', '110',
'130', '150', '170', '190', '210'
);


$im = imagecreatetruecolor($width, $height);
$back = imagecolorallocate($im, 255, 255, 255);
imagefill($im, 0, 0, $back);


$fonts = array();
$dir = opendir($path_fonts);

while($font_name = readdir($dir))
{
if($font_name !='.' && $font_name != '..')
$fonts[] = $font_name;
}

closedir($dir);


for($i = 0; $i < $back_let_amount; $i++)
{
$color = imagecolorallocatealpha($im, rand(0, 255), rand(0, 255), rand(0, 255), 100);

$font = $path_fonts . $fonts[rand(0, sizeof($fonts) - 1)];
$letter = $letters[rand(0, sizeof($letters) - 1)];
$size = rand($font_size - 2, $font_size + 2);

imagettftext($im, $size, rand(0, 45), rand($width * 0.1, $width - $width * 0.1),
rand($height * 0.2 , $height), $color, $font, $letter);
}

for($i = 0; $i < $let_amount; $i++)
{
$color = imagecolorallocatealpha($im, $colors[rand(0, sizeof($colors) - 1)],
$colors[rand(0, sizeof($colors) - 1)],
$colors[rand(0, sizeof($colors) - 1)], rand(20, 40));

$font = $path_fonts . $fonts[rand(0, sizeof($fonts) - 1)];
$letter = $letters[rand(0, sizeof($letters) - 1)];
$size = rand($font_size * 2.1 - 2, $font_size * 2.1 + 2);
$x = ($i + 1) * $font_size + rand(4, 7);
$y = (($height * 2) / 3) + rand(0, 5);
$code[] = $letter;

imagettftext($im, $size, rand(0, 15), $x, $y, $color, $font, $letter);
}


$_SESSION['captcha'] = implode('', $code);

header('Content-type: image/gif');
imagegif($im);
imagedestroy($im);


?>
Думаю там все очевидно.. Используется так.
создайте папку fonts для шрифтов, киньте туда любые biggrin.gif
при подключении не забудьте запустить сессию, и прописать условие типа
PHP:
if($_SESSION['captcha'] !== strtolower($_POST['captcha'])) 
{
print 'код неверный';
}