Самостоятельное создание сайта
ВСЕ О ТОМ, КАК
СДЕЛАТЬ САЙТ
САМОМУ


Оставить отзыв или предложение

Ставим каптчу на сайт

Исходник

Итак как вы понимаете каптча должна прикручиваться к какой либо форме, чтобы её и защищать, для этого мы будем использовать обычную форму с тремя полями:

Итак давайте сделаем первую страницу на которой у нас будет размещена сама форма он у нас будет называться index.php, а вот собственно и код:

<?php
session_start();

Запускаем сессии (важно, если вы будете вставлять код в другую страницу эта строчка должна быть первой иначе будет ошибка)

if($_SESSION['uid'] =='') {$_SESSION['uid'] = substr(mt_rand(10000,99999), 0, 6); }

Генерируем ключ, далее передаем его в скрытом поле

echo '<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Обратная связь</title>
<style>
form { font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:12px; font-weight:600;
color:#747474;
}
</style>
</head>
<body>

Здесь у нас стандартная шапка с кодировкой, заголовком ну и стиль… сложного ни чего нет.

<div style="width:300px; height:330px" align="center">
<form action="cont.php" method="POST">
Ваше имя<br/>
<input name="name" size="30" type="text" /><br/>
Ваш e-mail<br/>
<input name="email" size="30" type="text" /><br/>
Сообщение<br/>
<textarea name="messages" cols="23" rows="5"></textarea>
<br/>Введите код подтверждения:<br />
<img src="img/image.php" alt="" width="120" height="33" border="0" /><br/> <input style="margin:5px;font-size:30px; font-color:blue; height:34px;width:120px;" type="text" name="sid" value="" size="6" maxlength="6"/>
<br/>
<input name="do" value="Отправить" type="submit"/>

Здесь у нас сама форма, файл обработчик для этой формы cont.php, в нем находится сама функция mail() т.е. отправка почты, далее мы имеем 3 заполняемых поля размера 30 (size="30"), и соответственно 3 переменных которые мы будем передавать, а именно name, email, messages. Ну а ниже мы имеем саму катпчу которая собственно вставляется как картинка, но вместо файла картинки мы указываем php с кодом самой каптчи. Ну и последнее сама кнопка отправки…

Едем дальше:

</form>
</div>
</body>
</html>';
?>

Ну а здесь как вы поняли, мы все закрываем и наша страница готова. Все теперь нам пора сделать файл с самой каптчей, для этого создадим папку с названием img в которой у нас будут находится шрифт, подложки, ну и сам файл с кодом каптчи. Подложки и шрифт вы найдете в архиве с уроком. Итак файл каптчи будет называться image.php и вот собственно код:

<?php
session_start();

Опять таки запускаем сессию

$im=ImageCreateFromJpeg(round(mt_rand(1,5)).".jpg");

Создаем изображение из 5 возможных подложек формата jpg

$color=ImageColorAllocate($im,mt_rand(0,255),mt_rand(0,255),mt_rand(0,255));

Теперь мы генерируем цвет цифр которые будут у нас на картинке

ImageTtfText($im, 23, mt_rand(-5,5), 3, 30, $color, "addict.ttf", $_SESSION['uid']);

Теперь с помощью функции ImageTtfText() очень интересная функция о которой я расскажу поподробнее и так первое это у нас файл подложки $im, далее идет размер в нашем случае 23, теперь мы выставляем углы наклона у нас это от 5 до -5 градусов, потом задаем отступы по х,у, далее цвет который у нас сгенерирован в переменной $color, едем дальше здесь мы подгружаем шрифт, который лежит в той же папке что и наша каптча, ну и на последок текст надписи который у нас был сгенерирован на главной странице.

Header("Content-type: image/jpeg");

Здесь мы указываем тип содержания

ImageJpeg($im);

Создаем и выводим изображение

ImageDestroy($im); ?>

Разрушаем изображение и закрываем код…

Вот собственно и все с файлом image.php закончили, осталось нам привязать проверку каптчи к самой основной функции mail(), здесь собственно ни чего сложного достаточно добавить следующие строки в файл cont.php или тот файл в котором у вас находится функция mail():

if($_SESSION['uid'] == $_POST['sid']){
//Здесь будет находится сама функция и все то что будет у вас там есть в том числе всякие проверки…
}
else { echo '

Ошибка. Код подтверждения введен неверно

';
@session_destroy();
}

Т.е. если описать это простыми словами эта функция сравнивает код сгенерированный в скрытом поле на главной странице с кодом, введенным в поле каптчи и если все верно то выполняется все что у вас там есть, другие проверки и т.д. ну и естественно самое главное это функция mail(). Ну а если не верно, то вылезает ошибка и сессия разрушается…

В общем это далеко не самая сложная каптча которую можно установить на своем сайте, но достаточно эффективная поэтому я её и привел и как мне кажется понять ее несложно.

Для тех кто совсем не хочет вникать или не может понять как все происходит можно тупо скопировать весь исходник который прилагается к уроку и просто скопировать содержимое страницы index.php без шапки, но обязательно с первыми строками где запускается сессия и генерируется код, вставить на страницы своего сайта, откорректировать cont.php изменив адрес почты на свой и пользоваться все будет прекрасно работать…

Надеюсь из этого урока вы поняли как установить каптчу на сайт и проблем у вас не возникло, ну а если что пишите буду рад помочь.

Дата публикации:2010-06-01


Буду очень признателен, если вы поделитесь ссылкой на страницу со своими друзьями в социальных сетях.
Если у вас возникнут вопросы по теме пишите, надеюсь у вас все получиться, удачи вам и всего наилучшего!

Нашли ошибку в тексте

Нашли ошибку в тексте!!!
Просто выделите её мышкой, нажмите Ctrl+Enter.
И мы все исправим.

Allsoft
Хостинг Beget