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

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

Создание капчи на PHP

Капча (от англ. CAPTCHA - Completely Automated Public Turing Test to Tell Computers and Humans Apart) — техника защиты от автоматических запросов, предназначенная для отличия людей от компьютерных программ. Она используется в веб-системах для проверки регистрации новых пользователей и других форм отправки данных. Капча может быть создана на любом языке программирования, в том числе и на PHP.

Самый простой способ создания капчи заключается в следующем: генерируется случайная строка из букв, цифр или других символов. Эта строка отображается в виде изображения. После этого пользователь должен ввести значение строки в соответствующее поле формы. Если введенное значение совпадает со значением строки, которое было сгенерировано, то пользователю разрешается пройти проверку.

Для создания капчи на PHP нам понадобятся следующие функции:

  • imagecreatetruecolor() - для создания пустого изображения
  • imagefill() - для заливки изображения цветом
  • imagettftext() - для нанесения текста на изображение
  • imagejpeg() - для преобразования изображения в JPEG
  • session_start() - для инициализации сессии

Ниже приведен пример кода для создания капчи на PHP:

// Создаем пустое изображение
$img = imagecreatetruecolor(200, 50);

// Заливаем изображение цветом
$bgColor = imagecolorallocate($img, 255, 255, 255);
imagefill($img, 0, 0, $bgColor);

// Генерируем случайную строку
$captcha = generateRandomString(6);

// Записываем данные в сессию
session_start();
$_SESSION['captcha'] = $captcha;

// Наносим текст на изображение
$textColor = imagecolorallocate($img, 0, 0, 0);
imagettftext($img, 20, 0, 15, 30, $textColor, "fonts/Roboto-Regular.ttf", $captcha);

// Преобразуем изображение в JPEG
header("Content-type: image/jpeg");
imagejpeg($img);

// Освобождаем память
imagedestroy($img);

// Функция для генерации случайной строки
function generateRandomString($length = 10) {
    $characters = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $charactersLength = strlen($characters);
    $randomString = '';
    for ($i = 0; $i < $length; $i++) {
        $randomString .= $characters[rand(0, $charactersLength - 1)];
    }
    return $randomString;
}

В приведенном примере мы создаем пустое изображение шириной 200 и высотой 50 пикселей и заливаем его белым цветом. Затем мы генерируем случайную строку из букв и цифр и записываем ее в сессию. Далее мы наносим сгенерированную строку в виде текста на изображение и преобразуем изображение в формат JPEG. После этого готовое изображение можно отобразить на странице веб-сайта.

Используя приведенный пример мы можем легко создать капчу на PHP. Однако она будет достаточно простой и подвержена атакам распознавания текста. Для более сложной защиты можно использовать готовые сервисы капчи, такие как Google reCAPTCHA.

Ответы (0)