Простейшая каптча на php.
[code]
<?php
$capletters = 'ABCDEFGKIJKLMNOPQRSTUVWXYZ123456789' ;
$captlen = 7 ;
$capwidth = 120 ; $capheight = 20 ;
$capfont = 'font/comic.ttf' ;
$capfontsize = 14 ;
header('Content-type: image/png' );
$capim = imagecreatetruecolor($capwidth, $capheight);
imagesavealpha($capim, true );
$capbg = imagecolorallocatealpha($capim, 0 , 0 , 0 , 127 );
imagefill($capim, 0 , 0 , $capbg);
$capcha = '' ;
for ($i = 0 ; $i < $captlen; $i++){
$capcha .= $capletters[rand(0 , strlen($capletters)-1 ) ];
$x = ($capwidth - 20 ) / $captlen * $i + 10 ;
$x = rand($x, $x+5 );
$y = $capheight - ( ($capheight - $capfontsize) / 2 );
$capcolor = imagecolorallocate($capim, rand(0 , 100 ), rand(0 , 100 ), rand(0 , 100 ) );
$capangle = rand(-25 , 25 );
imagettftext($capim, $capfontsize, $capangle, $x, $y, $capcolor, $capfont, $capcha[$i]);
}
session_start();
$_SESSION['capcha' ] = $capcha;
imagepng($capim);
imagedestroy($capim);
?>
Сохраняем файл captcha.php.
Пункт 3.
Открываем файл index.php и добавляем код. Это сама страница в которой будет вводиться капча.
Листинг № 2 - Скрипт файла index.php
<?php
if ( isset ($_POST['capcha' ]) )
{
$code = $_POST['capcha' ];
session_start();
if (isset ($_SESSION['capcha' ]) && strtoupper($_SESSION['capcha' ]) == strtoupper($code))
{echo 'Верно!' ;}
else
{echo 'Не верно!' ;}
unset ($_SESSION['capcha' ]);
exit ();
}
?>
[/code]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Тест</title>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251" />
</head>
<body>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" >
<img src="captcha.php" width="120" height="20" /><br />
Введите капчу: <input type="text" name="capcha" /><br />
<input type="submit" value="Отправить" />
</form>
</body>
</html>