Создание CAPTCHA на PHP
В этом уроке продолжаем защищаться от спамеров. В уроке по Созданию расширенной формы обратной связи я описывал, как создавать проверку вводимых данных. В этом уроке мы с вами поговорим еще про один способ защиты от спамеров – это CAPTCHA. Как вы, наверное, уже догадались, в этом уроке мы будем создавать CAPTCHA.
Для начала создадим простую форму.
<form action="" method="post" name="form"> <p>Имя:</p> <input name="name" type="text" /> <p>E-mail:</p> <input name="email" type="text" /> <input name="send" type="submit" value="Отправить" /> </form>
Теперь приступит к созданию защиты от спамеров. CAPTCHA – это изображение состоящее из случайных символов.
![]()
Для реализации CAPTCHA нам прейдет на помощь PHP. Давайте создадим сценарий, который будет генерировать случайное изображение.
<?php
session_start();
header("Expires: Mon, 26 Jul 2010 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
function _generateRandom($length=6) {
$_rand_src = array(
array(48,57) //цифры
, array(97,122) //строчные символы
//, array(65,90) случайные символы
);
srand ((double) microtime() * 1000000);
$random_string = "";
for($i=0;$i<$length;$i++){
$i1=rand(0,sizeof($_rand_src)-1);
$random_string .= chr(rand($_rand_src[$i1][0],$_rand_src[$i1][1]));
}
return $random_string;
}
$im = @imagecreatefromjpeg("captcha.jpg");// Любая картинка
$white = ImageColorAllocate ($im, 255, 255, 255);
$black = ImageColorAllocate ($im, 0, 0, 0);
$rand = _generateRandom(3);
$_SESSION['captcha'] = $rand;
ImageString($im, 5, 2, 2, $rand[0]." ".$rand[1]." ".$rand[2]." ", $black);
$rand = _generateRandom(3);
ImageString($im, 5, 2, 2, " ".$rand[0]." ".$rand[1]." ".$rand[2], ImageColorAllocate ($im, 255, 0, 0));
Header ('Content-type: image/jpeg');
imagejpeg($im,NULL,100);
ImageDestroy($im);
?>
Для реализации CAPTCHA мы будем использовать сессии. На какой странице Вам необходимо реализовать CAPTCHA, откройте сессию.
<?php session_start() ?>
Теперь создадим проверку ввода CAPTCHA. Если пользователь введет правильно, будут выполняться действия, отправка на электронную почту, добавление комментария и т.д.
if($_SESSION["captcha"]==$_POST["captcha"]) {
//CAPTHCA совпадает. Идет выполнение действий.
}
Наконец присоединим нашу CAPTCHA к форме.
<?php session_start() ?>
<form action="" method="post" name="form">
<p>Имя:</p>
<input name="name" type="text" />
<p>E-mail:</p>
<input name="email" type="text" />
<input name="send" type="submit" value="Отправить" />
</form>
<?php
if(isset($_POST["captcha"]))
if($_SESSION["captcha"]==$_POST["captcha"]) {
//CAPTHCA совпадает. Идет выполнение действий
echo 'CAPTHCA совпадает';
} else {
echo 'CAPTHCA не совпадает, попробуйте еще раз.';
}
?>
Вот и все. Этот простой способ поможет вам защититься от спамеров.
P.S. сценарий создания CAPTCHA лучше всего размещать в файле с формой.
Последние уроки категории:
Сокращение PHP кода
Вы задумывались когда — нибудь о том, что лишний и бесполезный код убивает ваше время разработки приложения/сайта. Хотя это и кажется мелочью, но когда такой мелочи становится много, то время, потраченное впустую, становится ценным. И так давайте посмотрим, что можно и нужно сокращать...
Видимость переменных в PHP
В данном уроке рассматривается область видимости переменных PHP. Объясняется различие локальной и глобальной области видимости, показывается как получить доступ к глобальным переменным внутри функции, как работать с суперглобалами и создавать статические переменные.
Как читать Rss ленты?
Читалки и агрегаторы RSS используются для доступа, чтения и управления периодически-обновляемыми лентами RSS (или Atom), которые генерируются веб-сайтами. Эти ленты предоставляют доступ к последним материалам с этих сайтов.
Установка и настройка PHP+Apache
В этом уроке хотелось бы поднять очень интересную тему – Установка и настройка веб сервера PHP5 + Apache. В интернете довольно много различных инструкций по данной теме, но только вот в основном это копипаст, а не инструкция для человека, я же постараюсь объяснить все намного проще – на пальцах. Причина для установки локального вебсервера довольно много, например скорость выполнения и отладки скриптов, простота загрузки и модернизации контента и еще много чего.
Как выбрать фреймворк
Так уж повелось, что лень – это двигатель прогресса и как бы странно это не звучало, все те блага цивилизации, которые мы имеем сейчас были сделаны в первую очередь для нашего комфорта. Так и программисты чтобы облегчить себе жизнь и тем самым получить возможность создавать более сложные проекты за менее долгое время придумали сделать себе фреймворки.




Комментарии:
Ирина 23.09.2010 18:55:55
Denis 06.08.2010 12:12:44
Vijit 24.09.2010 05:44:06
Vijit 24.09.2010 05:49:45
Раиса 06.06.2011 18:19:09
Раиса 06.06.2011 19:23:51
admin 06.06.2011 19:49:11
Kaje 10.11.2011 14:54:03