{lang: ‘ru’}

captchaНаверно уже всем известно, что такое . Капчи присутствуют почти на всех сайтах, причиной этому является . В этой статье вы узнаете как сделать капчу при помощи библиотеки GD, уже знакомой нам из предыдущей статьи.

И так, приступим. Для начала нам нужно будет создать форму.

На форме у нас будет:

  1. Капча
  2. Поле для заполнения капчи
  3. Кнопка для отправки данных с поля
<form action="index.php" method="post">
<img src="captcha.php" alt=""/> <br>
<input name="txtCaptcha" type="text"/>
<input name="btnOk" value="ок" type="submit"/>
</form>

После создание формы, создайте папку, возле нашего исполняющего файла, с названием fonts(в ней мы будем хранить шрифты для капчи) и  внутрь этой папки поместите любой шрифт, который Вам понравится. Шрифты можно взять из системной папки шрифтов в Windows или найти в гугле. После создайте еще один php файл с именем captcha(в этом файле будет сам код по создание капчи).

В итоге папка с проектом должна иметь примерно такой вид:

captachaВ файле captcha.php пишем следующие строки:

<?php
	session_start();  // начать работу с сессиями
        // далее создаем полотно для нашей капчи: ширина - 100, высота - 45
        $bitmap = imagecreatetruecolor (100, 45);
        $color_bitmap = imagecolorallocate($bitmap, 233, 233, 233);
        imagefill($bitmap, 0, 0, $color_bitmap);

        // задаем цвет нашей линий
        $clinea = imagecolorallocate($bitmap,63,63,63);
        // добавляем случайно расположенные линии
        imageline($bitmap,rand(0,40),0,rand(0,70),40,$clinea);
        imageline($bitmap,rand(0,50),0,rand(0,50),40,$clinea);
        imageline($bitmap,rand(0,50),0,rand(0,30),40,$clinea);

        // генерируем случайный код капчи
	$string_captcha = substr(md5(microtime() * mktime()),0,rand(3,5));
        // записать сгенерируемый код в сессию
        $_SESSION['captcha'] = $string_captcha;
        // цвет текста капчи
	$red = rand(100,255);
	$green = rand(100,255);
	$blue = rand(100,255);
	$color = imagecolorallocate($bitmap,255-$red,255-$green,255-$blue);
        // добавляем сгенерированный текст с шрифтом courbd на наше полотно
	$text = imagettftext($bitmap,16,rand(-10,10),rand(10,30),rand(25,35),$color,"fonts/courbd.ttf",$string_captcha);
	// сохранить результат
	imagejpeg($bitmap);
?>

И снова возвращаемся к файлу index.php и дописываем сверху вот такой скрипт:

<?php
	session_start();
        if (isset($_POST['btnOk'])) // проверка нажал ли пользователь кнопку
        {
            if( $_SESSION['captcha'] != $_POST['txtCaptcha']) // проверка равна ли сессия тому что ввел пользователь
            {
                echo "Неверный код!";
            }
            else
            {
                echo "Поздравляем! Вы прошли защиту";
            }
        }
?>

В результате мы получили готовый скрипт капчи


Получайте новые статьи блога прямо себе на почту