<?php // Простенькая капча, без "наворотов"
// За основу был взят скрипт из открытого доступа
/* CAPTCHA
* Freeware
*/
// Запускаем сессию
session_name ("regsid");
session_start();
// Проверяем, пришло ли что из сессии
if(!@$_SESSION['rand'] || (!preg_match('/[[:digit:]]/', $_SESSION['rand']))) exit;
// Устанавливаем случайное число для капчи
$string = $_SESSION['rand'];
// Загружаем картинку
$im = imageCreate(42,20);
$fon = imageColorAllocate($im, mt_rand(230,255), mt_rand(230, 255), mt_rand(230, 255));
imageFill($im, 42, 20, $fon);
// Создаем цвет для картинки
$color1 = imageColorAllocate($im, mt_rand(0, 150), mt_rand(0, 170), mt_rand(0, 160));
$color2 = imageColorAllocate($im, mt_rand(0, 170), mt_rand(0, 140), mt_rand(0, 150));
$color3 = imageColorAllocate($im, mt_rand(0, 170), mt_rand(0, 160), mt_rand(0, 170));
$color4 = imageColorAllocate($im, mt_rand(0, 150), mt_rand(0, 160), mt_rand(0, 170));
$color5 = imageColorAllocate($im, mt_rand(0, 160), mt_rand(0, 150), mt_rand(0, 160));
// Разбиваем случайное число по цифрам
$str1 = substr($string, 0, 1);
$str2 = substr($string, 1, 1);
$str3 = substr($string, 2, 1);
$str4 = substr($string, 3, 1);
$str5 = substr($string, 4, 1);
// Рисуем цифры на изображении
imageString($im, 3, mt_rand(1,3), mt_rand(0,4), $str1, $color1);
imageString($im, 3, mt_rand(9, 11), mt_rand(0,5), $str2, $color2);
imageString($im, 3, mt_rand(17,19), mt_rand(0,2), $str3, $color3);
imageString($im, 3, mt_rand(25,27), mt_rand(0,3), $str4, $color4);
imageString($im, 3, mt_rand(33,35), mt_rand(0,5), $str5, $color5);
// Рисуем "мусор" на изображении, чтобы роботы не могли считать данные
for($c=0;$c<=1;$c++) {
$mcolor = imageColorAllocate($im, mt_rand(205,220), mt_rand(200, 210), mt_rand(195, 215));
$position = array(mt_rand(3, 10), mt_rand(1, 19), mt_rand(28, 35), mt_rand(1, 19));
imageLine($im, $position[0], $position[1], $position[2], $position[3], $mcolor);
unset($mcolor);
unset($position); }
// Запрещаем кэширование картинки
header ('Expires: Thu, 19 Feb 1998 13:24:18 GMT');
header ("Last-Modified: ".gmdate("D, d m Y H:i:s") ." GMT");
header ('Cache-Control: no-cache, must-revalidate');
header ('Cache-Control: post-chek=0,pre-chek=0');
header ('Cache-Control: max-age=0');
header ('Pragma: no-cache');
// Выводим картинку в браузер
header("Content-type: image/gif");
imageGif($im);
// Освобождаем память
imageDestroy($im);
?>