Наверно уже всем известно, что такое
И так, приступим. Для начала нам нужно будет создать форму.
На форме у нас будет:
- Капча
- Поле для заполнения капчи
- Кнопка для отправки данных с поля
<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(в этом файле будет сам код по создание капчи).
В итоге папка с проектом должна иметь примерно такой вид:
В файле 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 "Поздравляем! Вы прошли защиту"; } } ?>
В результате мы получили готовый скрипт капчи
Получайте новые статьи блога прямо себе на почту
Рекомендую также:
Спасибо, конечно, статья хорошо написана. Но для чего нужна капча? на блоге она только раздражает посетителей.
Для того, чтобы избежать спама
Очень познавательная и полезная статья, особенно для тех кто не знает PHP. Спасибо!
ПРИВЕТ! УДАЧИ! ВРУЧАЮ ВАМ КУБОК ПРИЗНАНИЯ! САЙТ ПОНРАВИЛСЯ, КРАСИВЫЙ И СОДЕРЖАТЕЛЬНЫЙ!
С наступающим Новым Годом! Всех Вам благ и исполнения желаний! Успеха Вам!
Это палка о двух конца: без защиты тоже плохо, но и заставлять посетителей проходить нудную процедуру (особенно, если предлагается выставить картинки вертикально — ненавижу эту капчу), тоже не дело
Меня каптча в коментариях раздражает