Просмотр кода
Название: Капча на PHP
Описание: Использовать можно так: session_start(); $captcha = new Captcha(); // Генерация и вывод капчи $captcha->generate(); // Проверка введенного кода if (isset($_POST['captcha_code'])) { $code = $_POST['captcha_code']; if ($captcha->validate($code)) { // Код верный // Продолжите обработку скачивания файла } else { // Код неверный // Выведите сообщение об ошибке или выполните другие действия } }
Добавил: AlertWeb
Дата: 6 нояб 2023, в 18:03 Комментарии (0)
Описание: Использовать можно так: session_start(); $captcha = new Captcha(); // Генерация и вывод капчи $captcha->generate(); // Проверка введенного кода if (isset($_POST['captcha_code'])) { $code = $_POST['captcha_code']; if ($captcha->validate($code)) { // Код верный // Продолжите обработку скачивания файла } else { // Код неверный // Выведите сообщение об ошибке или выполните другие действия } }
<?php class Captcha { private $width; private $height; private $length; public function __construct($width = 120, $height = 40, $length = 6) { $this->width = $width; $this->height = $height; $this->length = $length; } public function generate() { $code = $this->generateCode(); // Создание изображения $image = imagecreatetruecolor($this->width, $this->height); // Заполнение фона $background = imagecolorallocate($image, 255, 255, 255); imagefill($image, 0, 0, $background); // Нанесение текста $textColor = imagecolorallocate($image, 0, 0, 0); imagestring($image, 5, 10, 10, $code, $textColor); // Генерация шума $this->generateNoise($image); // Вывод изображения header('Content-type: image/png'); imagepng($image); imagedestroy($image); // Сохранение кода в сессии $_SESSION['captcha_code'] = $code; } public function validate($code) { // Получение сохраненного кода из сессии $savedCode = $_SESSION['captcha_code'] ?? ''; // Проверка введенного кода if (strcasecmp($code, $savedCode) === 0) { return true; } return false; } private function generateCode() { $characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $code = ''; for ($i = 0; $i < $this->length; $i++) { $code .= $characters[rand(0, strlen($characters) - 1)]; } return $code; } private function generateNoise($image) { $noiseColor = imagecolorallocatealpha($image, 0, 0, 0, 30); for ($i = 0; $i < $this->width * $this->height * 0.1; $i++) { imagesetpixel($image, rand(0, $this->width - 1), rand(0, $this->height - 1), $noiseColor); } } }
Добавил: AlertWeb
Дата: 6 нояб 2023, в 18:03 Комментарии (0)