{% else-1 %}
Простейшая каптча на php.

                        
[code] 
<?php

// Задаем список символов, используемых в капче
$capletters = 'ABCDEFGKIJKLMNOPQRSTUVWXYZ123456789';
// Длина капчи 7 знаков
$captlen = 7;

// Устанавливаем размеры изображения
$capwidth = 120; $capheight = 20;

// Подключаем шрифт
$capfont = 'font/comic.ttf';

// Размер нашего текста
$capfontsize = 14;

// Переопределяем HTTP заголовок, чтобы контент нашего
// скрипта представлял собой не текст, а изображение
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 оси
$x = ($capwidth - 20) / $captlen * $i + 10;

// Добавим «рендомности» в это положение.
$x = rand($x, $x+5);

// Находим положение по Y оси
$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>
1 29 0
0

Нет фото
Angel*:) * [мошенник] 1.9
• 10 янв 2014, 10:55


Mda. . .

0

Нет фото
BackUP * [мошенник] 7.25
• 7 янв 2014, 22:38


abler98, Никто не додумается искать там xss *

0

Нет фото
abler98 * 22.68
• 7 янв 2014, 16:31


Всё круто, но почему в форме $_SERVER[\'PHP_SELF\'] ?* 1. Лучше использовать $_SERVER[\'REQUEST_URI\'] - содержит в себе тот адрес, который у тебя в адресной строке после домена. 2. actin для формы указывать не обязательно* 3. Ты забыл поставить фильтр*
P.S. Сорри за оффтоп*