При создании лендинг-страницы постает вопрос по обработке данных формы и их отправка на почту. Где прописывается файл обработки и какая у него структура? Вот основной вопрос на который постараемся найти ответ
Прежде чем перейти к поиску ответа на поставленный вопрос оговорим, что файл для обработки данных формы будет размещаться отдельно от самой формы.
И так, приступим.
HTML-код нашей формы, которая может находится в отдельном файле или в теле страницы имеет такой вид
<
form
action
=
"order.php"
method
=
"POST"
name
=
"form"
>
<
input
name
=
"form_name"
type
=
"hidden"
value
=
"Открытая"
>
<
input
name
=
"came_from"
type
=
"hidden"
value
=
""
/>
<
input
type
=
"text"
required
name
=
"user_name"
value
=
""
class
=
"input_name "
placeholder
=
"ваше имя"
>
<
input
type
=
"text"
required
name
=
"user_email"
value
=
""
class
=
"input_email "
placeholder
=
"ваш e-mail"
>
<
input
type
=
"text"
required
name
=
"user_phone"
value
=
""
class
=
"input_phone "
placeholder
=
"ваш телефон"
>
<
input
class
=
"bttn"
name
=
"submit"
type
=
"submit"
value
=
"оставить заявку"
>
</
form
>
В представленном коде нам понадобиться следующие данные и переменные:
—
<form action=»order.php» method=»POST»
… — название и размещение файла (
order.php
) обработки введенных данных;
—
<input type=»text» required name=»user_name»
… — переменная (
user_name
), которая будет отвечать и передавать Имя пользователя;
—
<input … name=»user_email»
… — переменная (
user_ email
), которая будет отвечать и передавать электронную почту пользователя;
—
<input … name=» user_phone»
… — переменная (
user_phone
), которая будет отвечать и передавать номер телефона пользователя.
Таким образом, наша форма содержит поля – Имя, электронную почту и номер телефона пользователя.
Обработка данных формы PHP
Файл обработки данных формы, в нашем случаи, называется order.php. Для того, чтобы упростить задачу, отдельно выпишем переменные, поскольку неоднократно придется к ним обращаться.
Наши переменные
name=»user_name» —— Имя
name=»user_email» —- почта
name=»user_phone» —— телефон
Условно разделим файл обработки данных на три части – это проверка заполнения полей, формирование сообщения и его отправка.
Первая часть имеет следующий вид:
<?php
/* Осуществляем проверку вводимых данных и их защиту от враждебных скриптов */
$user_name
= htmlspecialchars(
$_POST
[
"user_name"
]);
$user_email
= htmlspecialchars(
$_POST
[
"user_emaill"
]);
$user_phone
= htmlspecialchars(
$_POST
[
"user_phone"
]);
/* Устанавливаем e-mail адресата куда отправлять*/
$myemail
=
"my_email@mail.ru"
;
/* Проверяем заполнены ли обязательные поля ввода, используя check_input
функцию */
$user_name
= check_input(
$_POST
[
"user_name"
],
"Введите ваше имя!"
);
$user_phone
= check_input(
$_POST
[
"user_phone"
],
"Укажите телефон!"
);
$user_email
= check_input(
$_POST
[
"user_email"
],
"Введите ваш e-mail!"
);
/* Проверяем правильно ли записан e-mail */
if
(!preg_match(
"/([\w\-]+\@[\w\-]+\.[\w\-]+)/"
,
$user_email
))
{
show_error(
"<br /> Е-mail адрес не существует"
);
}
Здесь проверили заполнение полей формы, а также, был ли корректно введен электронный адрес и с помощью переменной $myemail указали, на какой адрес следует отправить эти данные.
Но что же отправлять? Вот самое время формировать сообщение для отправки
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail
=
"Здравствуйте!
Вашей контактной формой было отправлено сообщение!
Имя отправителя:
$user_name
E-mail:
$user_email
Телефон:
$user_phone
Конец"
;
Сообщение сформировали, теперь осталось его только отправить адресату. За эту функцию отвечает третья часть файла, которая состоит с таких строк
/* Отправляем сообщение, используя mail() функцию */
$from
=
"From: $user_name <$user_email> \r\n Reply-To: $user_email \r\n"
;
mail(
$myemail
,
$user_phone
,
$message_to_myemail
,
$from
);
?>
<p>Ваше сообщение было успешно отправлено!</p>
<p>На <a href=
"index.php"
>Главную >>></a></p>
<?php
И результатом работы файла обработчика данных должно быть сообщение, которое сообщит пользователю о том, что его данные отправлены или же при заполнении полей формы допущена ошибка. Начнем с ошибок
/* Если при заполнении формы были допущены ошибки сработает
следующий код: */
function
check_input(
$data
,
$problem
=
""
)
{
$data
= trim(
$data
);
$data
= stripslashes(
$data
);
$data
= htmlspecialchars(
$data
);
if
(
$problem
&& strlen(
$data
) ==
0
)
{
show_error(
$problem
);
}
return
$data
;
}
function
show_error(
$myError
)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php
echo
$myError
;
?>
</body>
</html>
<?php
exit
();
}
?>
Проверяем работу тандема – формы обратной связи и файла обработчика. Если у Вас на странице выводятся крякозяблики вместо текста – исправьте кодировку файлов. Если же в ящик не приходит письмо, а сообщение об удачной отправке выводится – проверьте работу функции mail Хостинга .
Июль 10th, 2015 в 03:16
Как реализовать такую же форму, но с записью данных полей в файл doc(rtf) и отправкой этого файла на почту?
Июль 10th, 2015 в 16:04
Не совсем понимаю, зачем такое необходимо, но принцип реализации будет включать шаг, который входит в конструкцию Уникальное решение страницы Сайт в разработке . Но здесь идет открытие существующего файла, его изменение, а потом сохранение.