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

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

Логотип Софт

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

Самая простая форма обратной связи

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

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

HTML-код формы обратной связи остаётся прежним (см. "Создание формы обратной связи"), а из описанной РНР-программы уберём всё лишнее, то есть проверку заполнения полей. Напомню также, что кодировка задается с помощью дополнительного заголовка headers, который служит для определения в почтовой программе некоторых служебных параметров письма. В сухом остатке получим следующую страничку mail.php:

<!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=windows-1251"/>
<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'];}
$to = "pupkin@rambler.ru"; /*Здесь укажите свой адрес!*/
$headers = "Content-type: text/plain; charset = windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo "Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>

Как и раньше, вам остаётся только указать свой электронный адрес вместо pupkin@rambler.ru и поместить эту страничку mail.php в тот же каталог (папку) на сайте, где расположена страница с формой обратной связи.

В результате выполнения этой программы на адрес вашей электронной почты придет письмо с заголовком (темой) "Сообщение с вашего сайта". В письме будет указано имя пославшего ($name), его электронный адрес ($email) и текст сообщения ($mess). Для большинства применений этого вполне достаточно.

Замечание: на некоторых хостингах новая (только что установленная на сайте) форма обратной связи начинает работать не сразу, и первые письма не доходят совсем или поступают с задержкой на 1-2 дня. Вероятно, идет "притирка шестеренок", а затем все работает нормально. Кроме того, с некоторых хостингов не доходят письма на определенные адреса, например, у меня были проблемы с ящиком на Рамблере. Для решения этих проблем обратитесь к вашему хостеру - обычно помогают.

Если вы хотите исключить получение пустых сообщений с формы обратной связи, то можно добавить простейшую проверку заполнения полей, слегка усложнив страничку mail.php, о чем было рассказано в статье Создание формы обратной связи на сайте. В данном случае проверяется только "наличие отсутствия" любых знаков в полях Имя, Адрес и Сообщение:

<!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=windows-1251"/>
<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 (empty($name))
{
echo "<b>Не указано имя!<p>";
echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
exit;
}
else
if (empty($email))
{
echo "<b>Не указан e-mail!<p>";
echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
exit;
}
else
if (empty($mess))
{
echo "<b>Сообщение не написано!<p>";
echo "<a href=contacts.html>Вернуться к заполнению формы</a>";
exit;
}
else
$to = "pupkin@rambler.ru"; /*УКАЗАТЬ СВОЙ АДРЕС!*/
$headers = "Content-type: text/plain; charset = windows-1251";
$subject = "Сообщение с вашего сайта";
$message = "Имя пославшего: $name \nЭлектронный адрес: $email \nСообщение: $mess";
$send = mail ($to, $subject, $message, $headers);
if ($send == 'true')
{
echo "<b>Спасибо за отправку вашего сообщения!<p>";
echo "<a href=index.html>Нажмите,</a> чтобы вернуться на главную страницу";
}
else
{
echo "<p><b>Ошибка. Сообщение не отправлено!";
}
?>
</body>
</html>

Как и раньше, не забудьте указать свой адрес электронной почты и заменить a href=contacts.html , если ваша страница с формой обратной связи называется не contacts.html

17.12.2009 г.

Далее - Проверка формы обратной связи "на лету"

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




Rambler's Top100

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