View file system/captcha.php

File size: 1.8Kb
<?php
session_start();
/* Создаём картинку */
$width=50;
$height=20;
$im=imagecreatetruecolor($width, $height);
/* Заполним любым более-менее цветным фоном */
imagefill($im, 0, 0, imagecolorallocate($im, 255, 255, 255));
/* Количество цифр */
$limit=4;
/* Начальная позиция текста */
$start_pos_x=0;
/* Строка */
$string=NULL;
for($i=0; $i<$limit; $i++)
{
	/* Позиция по координате y */
	$start_pos_y=2;
	/* Позиция по координате x */
	$start_pos_x+=8;
	/* Записываем в строку */
	$string.=rand(1, 9);
	/* Рисуем на рисунке */
	imagestring($im, rand(4, 7), $start_pos_x, $start_pos_y, $string[$i],
	imagecolorallocate($im, rand(90, 150), rand(90, 150), rand(90, 150)));
}
/* Изменяем каждый пиксел */
for($j=0; $j<$width; $j++) for($k=0; $k<$height; $k++)
{
	/* Берем цвет каждого пиксела */
	$take=imagecolorat($im, $j, $k);
	$take=imagecolorsforindex($im, $take);
	$rgb[0]=$take['red'];
	$rgb[1]=$take['green'];
	$rgb[2]=$take['blue'];
	/* Смотрим, как его изменить */
	foreach($rgb as $key => $value)
	{
		$rand_do=rand(1, 0);
		$rand_coef=rand(5, 60);
		if($rand_do)
		{
			/* Если добавить */
			$add=$value+$rand_coef;
			if($add>255) $add=255;
			$rgb[$key]=$add;
		}
		else
		{
			/* Если отнять */
			$minus=$value-$rand_coef;
			if($minus<0) $minus=0;
			$rgb[$key]=$minus;
		}

	}
}
/* Заносим текст в сессию */
$_SESSION['code'] = $string;
/* Выводим картинку в броузер */
header('Content-type: image/png');
imagepng($im);
/* Очищаем буфер */
imagedestroy($im);
?>