Как сделать капчу на php

Узнайте как создать капчу на PHP с примером кода и понять принципиальную логику. Облегчьте процесс работы с капчей и защитите ваши формы.

Использование CAPTCHA на PHP

CAPTCHA (англ. Completely Automated Public Turing test to tell Computers and Humans Apart) - это метод идентификации человека по вводу верного ответа на простой вопрос. Он используется для борьбы со спамом и автоматическими ботами. Использование CAPTCHA на сайтах в основном ограничивается двумя типами заданий: ввод текста с изображения или ответ на простой вопрос. В этой статье мы рассмотрим, как создать CAPTCHA на PHP.

Для создания CAPTCHA на PHP мы будем использовать GD библиотеку. Она позволяет генерировать изображения на лету и использовать их для проверки человеческой идентификации. Первым делом нам понадобится набор букв и цифр. Вот наш набор:

$captcha_characters = 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789';

Теперь мы можем создать функцию для генерации CAPTCHA. Наша функция будет принимать два аргумента: ширину и высоту изображения. Она будет генерировать случайный текст из нашего набора символов, а затем рисовать его на изображении и возвращать его как результат.

function generate_captcha($width, $height) {
    // Создаем изображение
    $image = imagecreatetruecolor($width, $height);
    // Выбираем цвет для заливки изображения
    $background_color = imagecolorallocate($image, 255, 255, 255);
    // Заливаем изображение цветом
    imagefilledrectangle($image, 0, 0, $width, $height, $background_color);
    // Выбираем цвет текста
    $text_color = imagecolorallocate($image, 0, 0, 0);
    // Генерируем случайную строку
    $captcha_string = '';
    for ($i = 0; $i < 5; $i++) {
        $captcha_string .= $captcha_characters[rand(0, strlen($captcha_characters) - 1)];
    }
    // Рисуем строку на изображении
    imagettftext($image, 20, 0, 5, 25, $text_color, 'fonts/arial.ttf', $captcha_string);
    // Возвращаем строку
    return $captcha_string;
}

Теперь мы можем использовать эту функцию для создания изображения и получения строки CAPTCHA. Вот пример использования этой функции:

$captcha_string = generate_captcha(150, 50);
// Затем мы можем вывести изображение на экран
header('Content-type: image/jpeg');
imagejpeg($image);
// А затем удалить изображение из памяти
imagedestroy($image);

Теперь, когда мы сгенерировали изображение, мы можем сохранить его в файл или в базу данных. Для этого можно использовать функцию imagejpeg() или функцию imagepng(). Мы также должны сохранить код CAPTCHA для дальнейшей проверки. Это можно сделать, сохранив код в переменную сеанса или в базу данных.

Теперь, когда мы сгенерировали изображение и записали код в переменную сеанса или базу данных, мы можем проверить правильность введенного кода. Обычно проверка происходит при отправке формы. Вот пример проверки:

if ($_POST['captcha'] == $_SESSION['captcha']) {
    // Код введен правильно, можно обрабатывать форму
} else {
    // Код введен неправильно, показываем сообщение об ошибке
}

И это все! Теперь мы знаем, как создать и использовать CAPTCHA на PHP. Для большей безопасности рекомендуется использовать более сложные задания, например, распознавание изображений или ввод математических выражений.

Ответы (0)