www.seomark.ru
Обзоры интересных и полезных программ, фотография, радио, веб-дизайн и т.д. и т.п. и др. и пр.

Веб-дизайн и поисковая оптимизация

Логотип Софт

Создание формы обратной связи

Простая капча для формы обратной связи

В предыдущей статье рассказывалось о защите формы обратной связи от спама с помощью капчи. Обычно это сильно искаженные цифры и буквы, которые необходимо ввести перед отправкой сообщения через форму обратной связи. Другой вариант капчи - предложение посетителю сайта перед отправкой сообщения с формы обратной связи ввести сумму (разность, произведение и т.п.) нескольких чисел.

Создание такой простой капчи не потребует от вас знания программирования, а её вставка на сайт занимает всего несколько минут. Начнем с добавления новой строчки в обычную форму обратной связи (см. статью "Создание формы обратной связи на сайте"):

Ваше имя:

Ваш e-mail (для ответа):

Ваш вопрос:

Введите два любых ненулевых числа и их сумму:
плюс равно

Как видим, от посетителя требуется выполнить простейшее арифметическое действие, а наша задача проверить его правильность перед отправкой письма. Надеюсь, что приводить HTML-код формы не имеет смысла, так как вы можете его посмотреть, нажав CTRL+U в браузере.

Имена вводимых чисел (атрибут "name" тега input) обозначим a и b, а значение суммы, соответственно, sum. Для определения, двоешник или отличник хочет отправить нам послание, в РНР-программе обработки формы добавим проверку правильности выполнения операции сложения. Кроме того, проверим, введены ли вообще какие-то числа. Обратите внимание, что конструкция != означает "не равно".

$s = $a + $b; //Присваиваем переменной $s значение суммы a+b
if (empty($s)) //Проверка ввода чисел
{
echo "<b>Не введены числа или сумма равна нулю!<p>";
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else
if ($s != $sum) //Сравниваем значение суммы с введенным посетителем сайта
{
echo "<b>Введите правильно сумму!<p>"; //Если результаты разные, выводим сообщение об ошибке
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else //Если результаты совпадают, отправляем письмо
{
$to = "pupkin@rambler.ru";

... и так далее.

Как обычно, привожу так же полный рабочий код РНР-странички:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>Обратная связь</title>
</head>
<body >
<?php
if (isset($_POST['name'])) {$name = $_POST['name'];}
if (isset($_POST['email'])) {$email = $_POST['email'];}
if (isset($_POST['mess'])) {$mess = $_POST['mess'];}
if (isset($_POST['a'])) {$a = $_POST['a'];}
if (isset($_POST['b'])) {$b = $_POST['b'];}
if (isset($_POST['sum'])) {$sum = $_POST['sum'];}

if (empty($name))//Проверка ввода имени
{
echo "<b>Не указано имя!<p>";//Если не введено имя, выводим сообщение
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else
if (empty($email))//Проверка ввода email
{
echo "<b>Не указан e-mail!<p>";
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else
if (empty($mess))//Проверка ввода текста сообщения
{
echo "<b>Сообщение не написано!<p>";
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else
{
$s = $a + $b;//Присваиваем переменной $s значение суммы a+b
if (empty($s))//Проверка ввода чисел
{
echo "<b>Не введены числа или сумма равна нулю!<p>";
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else
if ($s != $sum)//Сравниваем значение суммы с введенным посетителем сайта
{
echo "<b>Введите правильно сумму!<p>";//Если результаты разные, выводим сообщение об ошибке
echo "<a href='javascript:history.go(-1)'>Вернуться к заполнению формы</a>";
}
else//Если результаты совпадают, отправляем письмо
{
$to = "pupkin@rambler.ru"; //Укажите ваш адрес электронной почты
$headers = "Content-type: text/plain; charset = utf-8";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
}
else
{
echo "<p><b>Сообщение не отправлено. Приносим свои извинения.";
echo "<p><b>Попробуйте повторить отправку позже или свяжитесь с нами по телефону";
}
}
}
?>
<p>Привет из Севастополя!</p>
</body>
</html>

15.10.2011 г.

Задать вопрос автору





Яндекс.Метрика

Copyright © 2008 - Марк Розенталь e-mail: Мой e-mail
Перепечатка материалов сайта разрешается при условии сохранения имени автора и гиперссылки на www.seomark.ru
Ключевые слова: капча, ввод капчи, программа капчи, скрипт капчи, captcha, создание формы обратной связи, простая капча