PHP

Форма обратной связи с проверкой часть 2

Давайте немного вспомним. что мы сделали в первой публикации на тему создание формы обратной связи на сайте, с проверкой и защитой от спама. И так мы создали код формы из 5 полей и одного скрытого поля, написали обработчик, для проверки правильности заполнения полей, имени, темы, email. Проверили на корректность заполнение поля email. Создали 3 файла php. И как я и обещал в следующей публикации создадим капчу, защитный код, от спам ботов.

Зачем нужна защита от спам ботов - капча? Если вы не хотите получать на свой email ежедневно тысячи бессмысленных писем, с кучей никому ненужных ссылок, а то даже и вирусов, то тогда спасает защитный код, который не даст, боту пройти, далее и отправить сообщение вам. На проверочном коде, если он конечно не от рекапчи, которую уже давно взломали и копируют боты их код и проходят. Это просто было главно знать.

Создаем капчу защитный код

Для создания такого скрипта, создавать велосипед не будим, а возьмем готовое решение, которое я прикладываю в исходниках, и просто подключаем, сейчас покажу как. В исходниках все файлы проверки лежат в папке kcaptcha. Можно ее просто скопировать на сайт, а потом просто прописать путь и все. Для примера я просто копирую в корневой каталог папку kcaptcha, в которой и будет генерироваться весь наш код защиты. Далее встроим в форму, вывод проверочного кода вот так;

Код HTML
	<form action="./" method="post" id="mail_form">
	<input name="test" value="1" type="hidden">
	<fieldset>
	<label for="name"><b>Ваше имя:</b></label>
	<input class="text" size="25" name="name" id="name" type="text">
	<label for="email"><b>Ваш E-mail адрес:</b></label>
	<input class="text" size="25" name="email" id="email" type="text">
	<label for="message"><b>Тема сообщения:</b></label>
	<input class="text" size="25" name="message" id="message" type="text">
	<label for="text"><b>Сообщение:</b></label>
	<textarea cols="50" rows="20" name="text" id="text"></textarea>
	// После поля текста вставляем следующий код
	<label for="сaptcha"><center><b>Текст на изображении (цифры)</b>:<a href="readme.html"><img src="kcaptcha?<?php echo session_name()?>=<?php echo session_id()?>" border="0"></a></center>
	// Перед полем ввода проверочного кода
	<input class="text" size="25" name="key" id="key" type="text">
	<br><br>
	<label><input class="submit" name="submit" id="submit" value=" Отправить " type="submit"></label>
	</label></fieldset>
	</form>

Далее давайте перед формой добавим поля для вывода ошибок, либо успешного отправления. Вот таким образом;

Код HTML
	<p id="emailSuccess">
	<strong style="color:green;"><!--?php echo "$statusSuccess" ?--></strong>
	</p>
	<p id="emailError"><strong style="color:red;"><!--?php echo "$error" ?--></strong></p>

При проверке скрипт выведет в соответствующие поля, строки сообщение. Переходим к обработчику, проверке введенных символов с картинки.

Код PHP
	// После
	// Когда пользователь нажал кнопку отправить
	if ($_POST[&apos;test&apos;]== "1")
	{
	// Вставляем
	if(isset($_SESSION[&apos;captcha_keystring&apos;]) && $_SESSION[&apos;captcha_keystring&apos;] ==  $_POST[&apos;key&apos;])
	{

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

Код PHP
	include(&apos;kcaptcha/kcaptcha.php&apos;);
	session_start();
	require_once("config.php");
	//Перед
	require_once("error.php");
	//После
	// Здесь проверим капчу далее
	// Вставим
	$statusError = "$captcha_error";
	unset($_SESSION[&apos;captcha_keystring&apos;]);

В файле error.php

Код PHP
	// В самом конце добавим
	$captcha_error = &apos;Проверьте правильность ввода защитного кода&apos;;
	$send = &apos;Ваше сообщение успешно отправлено&apos;;

На этом наши созданные 3 файла, мы больше не трогаем, переходим к настройке самого скрипта. Открываем папку captcha находим файл config_captcha.php и настраиваем его следующим образом

Код PHP
	$allowed_symbols = "23456789"; #Выбираем символы которые будут показаны на картинке (o=0, 1=l, i=j, t=f)
	// Папка с шрифтами
	$fontsdir = &apos;fonts&apos;;   
	//Количество символов
	$length = 5;
	// Ширина и высота соответственно
	$width = 110;
	$height = 50;
	//Глубина искажения символов
	$fluctuation_amplitude = 5;
	//Далее лучше ничего не трогать

На этом завершаем и проверяем, если у вас все работает правильно значит вы сделали, все так как я сказал. Воникли вопросы пишите в комментарии.
Добавлено: 31 Декабря 2014 22:37:23 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...