Очень часто на сайтах и блогах требуется установить форму обратной связи. Для осуществления данной задачи предлагаю готовое решение.

Скрипт работает стабильно и быстро. После заполнения всех форм и отправки сообщения, пользователь остается на той же странице, что удобно с точки зрения юзабилити.

Чтобы установить данную форму связи на сайт необходимо создать два файла с php расширением. В нашем случаи они будут называться index.php и mail.php.

zemla

Файл index.php

session_start();

* Имя:
максимум 20 символов
/>
* e-mail:
максимум 20 символов
/>
* Сообщение:
максимум 1000 символов
Я робот:
снимите галочку, если это не
так

echo $_SESSION['res'];
session_unset();
session_destroy();

Второй файл mail.php, в котором находится обработчик формы, должен находиться в той же папке, что и файл index.php.

Файл mail.php

if($_POST['submit']){
session_start();
// обрабатываем полученные переменные
$name = htmlspecialchars(substr($_POST['name'], 0, 20));
$mail = htmlspecialchars(substr($_POST['mail'], 0, 20));
$text = htmlspecialchars(substr($_POST['text'], 0, 1000));
$aspam = $_POST['aspam'];
// проверяем заполненность обязательных полей
$pattern = "/^[a-z0-9_\-]+@[a-z0-9_\-]+\.[a-z]{2,6}$/i"; // name@to.com
$error = '';
if(empty($name)) $error = "

  • Не заполнено поле \"Имя\"
  • ";
    if(empty($mail)) $error .= "

  • Не заполнено поле \"e-mail\"
  • ";
    if(empty($text)) $error .= "

  • Не заполнено поле \"Текст сообщения\"
  • ";
    if(!empty($mail) and !preg_match($pattern, $mail)) $error .= "

  • Поле \"e-mail\"не соответствует
    установленному формату
  • ";
    if($aspam == 'on') $error .= "

  • Не пройдена проверка на человечность
  • ";
    if(empty($error)){
    // определяемпеременные
    $to = ' to@mail.com';
    $subject = 'Заполнена форма на сайте';
    $message = "Имя: " .$name. "\r\n";
    $message .= "Обратный e-mail: " .$mail. "\r\n\r\n";
    $message .= "Текст сообщения: \r\n" .$text;
    $headers = "Content-type: text/plain; charset = \"windows-1251\"";
    // формируем сообщение
    if(mail($to, $subject, $message, $headers)){
    $_SESSION['res'] = $name. ", Ваше сообщение отправлено.";
    header("Location: index.php");
    exit();
    }else{
    $_SESSION['res'] = " Произошла ошибка. Попробуйте еще раз.";
    header("Location: index.php");
    exit();
    }
    }else{
    $_SESSION['res'] = "Вы не заполнили обязательные поля:

      " .$error. "

    ";
    $_SESSION['name'] = $name;
    $_SESSION['mail'] = $mail;
    $_SESSION['text'] = $text;
    header("Location: index.php");
    exit();
    }
    }else{
    header("Location: index.php");
    exit();
    }

    Это очень хороший скрипт для отправки данных. Большим плюсом является функция своеобразной капчи в виде чекбокса. Пользователь должен снять галочку, чтобы пройти проверку на человечность. Иначе обработчик формы сообщит, что не пройдена проверка на человечность. Также в форме присутствует проверка на заполнение данных.

    Не забудьте прописать свой обратный электронный адрес в файле mail.php // определяем переменные
    $to = 'to@mail.com';

    Автор статьи: Василий Лотыш

    Seo специалист, интернет-маркетолог, эксперт по технической оптимизации сайта.

      Бесплатная консультация