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

простая форма обратной связи - php, html

Я расскажу, как создать именно простую форму обратной связи. Любую сложную форму для WordPress можно создать плагином Fast Secure Contact Form, а мой урок будет полезен тем, кто желает знать HTML и PHP основы формы обратной связи.

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

Обновление от 19.07.2013. Ещё более простой способ — воспользоваться конструктором форм.

Обратная связь состоит из 2 частей: пользовательской (сама форма) и серверной (обработка отправленных пользователем данных). Первая часть может выглядеть примерно так:

Ваше имя:

Контактная информация для связи с вами (icq, e-mail или номер телефона):

Ваше сообщение:

Для создания такой формы послужит следующий HTML-код:

<form method="POST" action="/my-form-action.php">
<p>Ваше имя:</p>
<input name="name">
<p>Контактная информация для связи с вами (icq, e-mail или номер телефона):</p>
<input name="contact">
<p>Ваше сообщение:</p>
<textarea name="message"></textarea>
<p><input type="submit" value=" Отправить "></p>
</form>

В первой строке кода мы указали, что данные будут передаваться методом «POST» и что обрабатывать переданные данные будет скрипт «my-form-action.php», находящийся в корне сайта. Есть альтернативный метод передачи данных — «GET». Этим методом данные передаются через URL, в силу чего не удастся передать большой текст. Метод GET используют в основном для навигации.

Передаваться будут 3 значения: name, contact, message — именно по этим именам будем их ловить в скрипте обработки данных, переданных из простой формы обратной связи. Простой скрипт отбаботки (my-form-action.php):

<?
# получаем данные и отсекаем пробельные символы в начале и конце:
$name = @ trim ($_POST['name']);
$contact = @ trim ($_POST['contact']);
$message = @ trim ($_POST['message']);
# проверка, переданы ли все данные
if (! $name or ! $contact or ! $message) exit ('Необходимо заполнить все поля, вернитесь');
# отправка данных на мыло админу
mail ("admin@site.ru",
      "Сообщение с сайта (отправитель: $name)",
      "$message \n\n Контакты: \n $contact");
header ("Location: /my-form-ok.html");
?>

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

Важно. Отправьте тестовые данные после того, как установите форму на сайт. Если вместо слов на русском языке на почту придут непонятные символы — тут дело в кодировке. Для исправления добавляем один передаваемый функцией mail () параметр (строки 9-11 в коде выше):

mail ("admin@site.ru",
      "Сообщение с сайта (отправитель: $name)",
      "$message \n\n Контакты: \n $contact",
      "Content-type:text/plain; charset=utf-8");

Здесь явно указана кодировка utf-8, если после её указания на почту всё равно приходят кракозябры, но другие, попробуйте указать кодировку windows-1251.

В строках 3, 4, 5 мы получаем переданные данные. В строках стоит символ «@», подавляющий сообщения «notice» на тот случай, если данные не переданы. В 7 стоке условие будет иметь значение TRUE в том случае, если хотя бы одно из значений — пустая строка. Пользователю будет предложено вернуться и заполнить все поля, а выполнение скрипта обработки будет остановлено. В строке 9 происходит отправка сообщений на e-mail администратора. Первым параметром мы указываем свой адрес e-mail, второй параметр — тема письма (в ней будет имя отправившего сообщение пользователя), третий — тело письма (сообщение и контакты).

12 строкой мы отправляем пользователя на страницу «my-form-ok.html» в корне сайта, где можно написать что-то типа «спасибо за сообщение», также можно отправить на любую другую страницу.

Здесь мною изложены основы web-кодинга, которые помогут создать простую форму обратной связи. В создании более сложной формы да помогут вам готовые скрипты или справочники.

Update 12.10.2010.

Egor предложил объединить скрипт-обработчик и форму в один файл. Вот что у меня получилось:

<?
if (isset ($_POST['message'])) {
$name = @ trim ($_POST['name']);
$contact = @ trim ($_POST['contact']);
$message = @ trim ($_POST['message']);
if (! $name or ! $contact or ! $message) echo ('<p style="color: red">Необходимо заполнить все поля</p>');
else { mail ("admin@site.ru",
      "Сообщение с сайта (отправитель: $name)",
      "$message \n\n Контакты: \n $contact");
      echo ('<p style="color: green">Ваше сообщение получено, спасибо!</p>');
      $_POST['name'] = $_POST['contact'] = $_POST['message'] = '';
}
}
?>
<form method="POST">
<p>Ваше имя:</p>
<input name="name" value="<?=@$_POST['name'];?>">
<p>Контактная информация для связи с вами (icq, e-mail или номер телефона):</p>
<input name="contact" value="<?=@$_POST['contact'];?>">
<p>Ваше сообщение:</p>
<textarea name="message"><?=@$_POST['message'];?></textarea>
<p><input type="submit" value=" Отправить "></p>
</form>

Запись опубликована 21 декабря 2009 года. Пост окончен, но в рубрике «Web-кодинг» есть не менее интересные посты:

Подписка на RSS канал блога RSS подписка (как это?) поможет вам не пропустить ничего интересного на этом блоге.