Как сделать капчу на 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. Для большей безопасности рекомендуется использовать более сложные задания, например, распознавание изображений или ввод математических выражений.