Очень часто на сайтах и блогах требуется установить форму обратной связи. Для осуществления данной задачи предлагаю готовое решение.
Скрипт работает стабильно и быстро. После заполнения всех форм и отправки сообщения, пользователь остается на той же странице, что удобно с точки зрения юзабилити.
Чтобы установить данную форму связи на сайт необходимо создать два файла с php расширением. В нашем случаи они будут называться index.php и mail.php.
Файл index.php
session_start();
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 .= "
";
if(empty($text)) $error .= "
";
if(!empty($mail) and !preg_match($pattern, $mail)) $error .= "
установленному формату
";
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';