SAPID INFO

Код обработчика формы – в отдельном или текущем файле

Рассмотрим два варианта обработки формы на сайте:

  1. код обработки формы будет размещаться в отдельном файле;
  2. код обработки формы будет в том же файле, что и сама форма.

Код и форма в разных файлах

Примеры, когда этот метод уместен и удобен:

  • landing page, когда на одной странице расположено несколько форм;
  • на отдельных страницах сайта есть формы, которые нужно обработать.

Код форм на landing page (на примере двух):

<form method="post" id="" class="" action="send.php">
	<input type="hidden" name="page_name" value="Landing page">
	<input type="hidden" name="form_name" value="Заказ обратного звонка">
	<input type="text" name="name" placeholder="Введите имя" />
	<input type="text" name="phone" placeholder="Телефон или skype" />
	<input type="email" name="email"  placeholder="Ваш email" />
	<input type="submit" name="send" value="Отправить сообщение">
</form>

<form method="post" id="" class="" action="send.php">
	<input type="hidden" name="page_name" value="Landing page">
	<input type="hidden" name="form_name" value="Заказ пробников продукции">
	<input type="text" name="name" placeholder="Введите имя" />
	<input type="text" name="phone" placeholder="Телефон или skype" />
	<input type="email" name="email"  placeholder="Ваш email" />
	<input type="submit" name="send" value="Отправить сообщение">
</form>

Код формы на внутренней странице сайта:

<form method="post" id="" class="" action="send.php">
	<input type="hidden" name="page_name" value="БЛОГ // Страница 01">
	<input type="hidden" name="form_name" value="Получить консультацию">
	<input type="text" name="name" placeholder="Введите имя" />
	<input type="text" name="phone" placeholder="Телефон или skype" />
	<input type="email" name="email"  placeholder="Ваш email" />
	<input type="submit" name="send" value="Отправить сообщение">
</form>

Код обработчика (содержимое файла send.php):

<?php

/* на какой email отправляем? */
// если почтовых ящиков несколько - перечислите через запятую
$our_mail = '[email protected]';

/* захватываем данные с формы */
$client_name = $_POST['name'];			// имя клиента
$client_mail = $_POST['email'];			// почта клиента
$client_phone = $_POST['phone'];		// телефон/скайп клиента
$form_name = $_POST['form_name'];		// название формы (указывает на то, что хотел человек, отправивший сообщение)
$page_name = $_POST['page_name'];		// название страницы (указывает на то, с какой страницы отправлено сообщение)

/* генерируем тему письма (создаем временную переменную) */
$post_subject = 'Заявка с site.info';								// указываем, с какого сайта сообщение
if ($client_name != '') { $post_subject .= ', '.$client_name; }		// добавляем имя в тему письма
if ($client_mail != '') { $post_subject .= ', '.$client_mail; }		// добавляем email в тему письма
if ($client_phone != '') { $post_subject .= ', '.$client_phone; }	// добавляем телефон/скайп в тему письма
// зачем так много параметров в теме письма? чтобы каждое письмо было уникальным

/* генерируем содержимое письма, которое будем отправлять владельцу сайта */
$post_message = '<html>
<head>
  <title>'.$post_subject.'</title>
</head>
<body>
<p>Заявка с site.info:</p>
<table>';
// проверяем, какие из полей были заполнены и собираем данные в сообщение
if ($client_name != '') {  $post_message .= '<tr><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">Имя: </td><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">'.$client_name.'</td></tr>'; }
if ($client_mail != '') {  $post_message .= '<tr><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">E-mail: </td><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">'.$client_mail.'</td></tr>'; }
if ($client_phone != '') { $post_message .= '<tr><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">Телефон/скайп: </td><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">'.$client_phone.'</td></tr>'; }
if ($form_name != '') {    $post_message .= '<tr><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">Название формы: </td><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">'.$form_name.'</td></tr>'; }
if ($page_name != '') { $post_message .= '<tr><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">Название страницы: </td><td style="border: 1px solid #f9f1f1; padding: 5px 20px;">'.$page_name.'</td></tr>'; }
$post_message .= '
</table>
</body>
</html>';
$post_headers  = "MIME-Version: 1.0\r\n";
$post_headers .= "Content-type: text/html; charset=utf-8\r\n"; 
$post_headers .= "From: SiteInfo <[email protected]>"."\r\n";

/* отправляем емейл владельцу сайта */
mail($our_mail, $post_subject, $post_message, $post_headers);


/* собираем информацию для отправки клиенту */
// тема сообщения
$post_subject = 'Ваша заявка с сайта site.info успешно получена';
// содержимое сообщения
$post_message = '<html>
<head>
  <title>Ваша заявка с сайта site.info успешно получена</title>
</head>
<body>
<p>Добрый день!</p>
<p>Благодарим Вас за внимание к сайту site.info!</p>
<p>Наши специалисты успешно получили заявку.</p>
<p>В ближайшее время мы свяжемся с Вами!</p>
<p>С уважением,<br />администрация site.info</p>
</body>
</html>';
// отправляем сообщение клиенту
mail($client_mail, $post_subject, $post_message, $post_headers);

// переходим на страницу "спасибо" после отправки сообщения владельцу сайта и клиенту
header( 'Location: http://site.info/thanks.php' );

Код и форма в одном файле

Пример использования формы и обработки формы такого типа – запрос пользователя для получения ссылки на скачивание файла:

<form method="post" id="" class="" enctype="multipart/form-data">
	<div>Введите Ваш e-mail, чтобы получить книгу:</div>
	<input type="email" name="email" placeholder="Введите email">
	<input type="submit" name="send_request" value="Получить книгу">
</form>

Код обработчика этой формы (размещается в том же файле):

<?php
if (isset($_POST['send_request'])) {
/* получаем данные с формы: емейл запроса */
$creators_email = $_POST['enquiry_email'];
// указываем тему письма
$post_subject = 'Ссылка на свачивание книги';
// указываем содержимое письма
$post_message = '<html>
<head>
<meta charset="utf-8" />
<title>Ссылка на свачивание книги</title>
</head>
<body>
<div>
	<p>Ссылка на свачивание книги:</p>
	<ul>
		<li>
			<a href="">Книга "искусство быть копирайтером"</a>
		</li>
	</ul>
</div>
</body>
</html>';
	$post_headers  = "MIME-Version: 1.0\r\n";
	$post_headers .= "Content-type: text/html; charset=utf-8\r\n"; 
	$post_headers .= "From: GLOBAL FX <[email protected]l-fx.com>"."\r\n";
        mail($creators_email, $post_subject, $post_message, $post_headers);
}
?>

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

<?php
if (isset($_POST['send_request'])) {
	echo 'В этом месте на странице появится сообщение о том, что email успешно отправлен.';
}
?>

Комментарии к статье
Игорь, Декабрь 11, 2016 в 11:54 дп:

Хочу предложить небольшое дополнение для обработки чекбоксов (флажков) вместе с формой, берем форму выше и добавляем к неё два чекбокса, после чего в обработчик добавляем строки в соответствующие места:

$check = ''; //обработка чекбоксов
if (!empty($_POST["check"]) && is_array($_POST["check"]))
{
    $check = implode(" ", $_POST["check"]);
}

ну и

if ($check != '') { $post_message .= 'Меня заинтересовали: '.$check.''; }

все отлично работает, тексты чекбоксов выводятся в письме поочередно.

Добавьте свой комментарий - оставьте след в блоге!