Скрипт капчи на php

Дата Автор 

Каждый вебмастер знает, если не поставить капчу, на форму регистрации, обратную связь или куда-нибудь ещё, то ваш почтовый ящик будет просто забит спамом. В этой статье я покажу Вам, как создать простой скрипт капчи.

скрипт капчи
 

Данная статья рассчитана на тех, кому интересно программирование, так как я тоже прекрасно понимаю, что для всех движков разработан не один плагин капчи. А вот у меня вопрос: а кто-нибудь интересовался, как устроена капча? Если нет, то эта статья для Вас.

 

Итак, для начала необходимо создать форму регистрации. В своем примере, я создам только форму для капчи, то есть остальных полей не будет. Про то, как создать форму регистрации на php я напишу отдельно. Итак, вот код для капчи:

 

<form name="reg" action="reg.php" method="post">

Проверочный код

  <img src = "captcha.php" />;

  <input type = "text" name = "kapcha" />

  <input type = "submit" value = "Регистрация" />

</form>

 

Ну, собственно говоря, тут, как обычно все просто. Тегом form создаем форму с именем reg, которая будет отправлять методом post все введенные данные в файл reg.php и там их обрабатывать. Дальше создаем, тег вывода изображения, а выводиться оно будет из файла capcha.php, как так получиться расскажу чуть позже. Соответственно поле для ввода капчи и кнопка отправки данных.

 

Итак, форма создана, теперь необходимо создать для неё случайный вывод символов и проверку соответствия введенных символов с теми, что на картинке. Это два обязательных файла из которых состоит скрипт капчи. Для начала расскажу Вам про файл capcha.php. Он будет содержать в себе настройки картинки с проверочным кодом, то есть фон, цвет и размер букв, размер картинки, направление текста и т.д. Вот код этого файла:

 

<?php

session_start();

$string = "";

for ($i = 0; $i < 3; $i++) // Здесь задается количество символов на картинке

$string .= chr(rand(97, 122)); // вывод случайных символов от a до z, по html коду

$_SESSION['rand_code'] = $string; // создаем сессию, в которой будут храниться отображаемые символы

$dir = "fonts/"; // подключаем папку со шрифтом

$image = imagecreatetruecolor(170, 60); // размер создаваемой картинки

$black = imagecolorallocate($image, 10, 110, 0); // выделение цвета для изображения

$color = imagecolorallocate($image, 200, 180, 90); // Цвет символов на картинке

$bg = imagecolorallocate($image, 255, 255, 0); // фоновое изображение картинки

imagefilledrectangle($image,0,0,399,99,$bg); // рисует заполненный прямоугольник

imagettftext ($image, 30, 0, 10, 40, $color, $dir."verdana.ttf", $_SESSION['rand_code']); // добавляем текст на изображение с использованием шрифтов TrueType, а так же сохраняем символы в данной сессии

header("Content-type: image/png"); // объявляем тип страницы

imagepng($image);

?>

 

Ну и последний файл, который использует скрипт капчи – это reg.php. В нем будет происходить проверка введенных данных с теми, что сгенерировал скрипт. Опять же код абсолютно простой:

 

<?php

session_start();

if($_POST['kapcha'] != $_SESSION['rand_code']) echo "NO";

else echo "YES";

?>

 

Думаю объяснения излишне, обычный условный оператор, который проверяет равенство значений и выводит соответствующие действия. На всякий случай отмечу один важный момент. В файле reg.php значения сессии и post запроса должны содержать точно такие же имена, как и в двух других файлах. Например, если имя поля ввода капчи будет не kapcha, а kap, тогда в reg.php у post запроса, так же должно быть kap, иначе данные не передадутся.

 

Все созданные файлы не забудьте сохранить в кодировке UTF-8, иначе работать они у вас не будут. Ну и на этом, пожалуй, все! Надеюсь Вам пригодиться скрипт капчи, и вы используете его на своем сайте. Скачать все файлы вы сможете чуть ниже.

 

Спасибо за внимание!!! С уважением Остапенко Илья.

Оцените материал
(4 голосов)
 

Комментарии   

 
Блог SEO Бакалавра
0 # 06.07.2013 11:11
http://ip-whois.net/forma-obratnoj-svyazi/- конструктор капчи для не динамического сайта. Все параметры можно настроить под свой сайт. :-)
Ответить | Ответить с цитатой | Цитировать
 
 
Остапенко Илья
0 # Остапенко Илья 07.07.2013 06:04
И к чему это???
Ответить | Ответить с цитатой | Цитировать
 
 
Anton
0 # 16.08.2013 14:34
Спасибо за информативный пост. Капча полезная вещь особенно против спама.
Ответить | Ответить с цитатой | Цитировать
 
 
Андрей
-1 # 10.02.2014 02:05
Что-то не получилось с капчей, картинка не показывается, видимо потому, что отсутствует шрифт?
Ответить | Ответить с цитатой | Цитировать
 
 
Андрей
-2 # 10.02.2014 02:06
Аааа, сразу не заметил ссылку на архив.
Извиняюсь.
Ответить | Ответить с цитатой | Цитировать
 
 
Пётр
-2 # 08.05.2014 02:14
Спасибо за полезную статью. Не знал как поставить капчу. Теперь в курсе. Сейчас же попробую.
Ответить | Ответить с цитатой | Цитировать
 
Добавить комментарий


Защитный код
Обновить