Настройка форм, пишем php обработчик

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

Для примера я скопировал самый обычный товарный лендинг с простой формой, которая отправляет имя и телефон клиента

в этом лендинге стандартный набор файлов, папка со стилями, папка со шрифтами, папка с изображениями лендинга, папка со скриптами, служебная папка самой партнерки откуда я этот лендинг скачал и конечно же индексный файл самого лендинга

Итак, лендинг у нас есть, далее открываем любым редактором кода файл index.html, я тут всю работу буду показывать на примере редактора notepad++ вы же можете использовать тот что вам удобнее. Итак, после того как код индексной страницы открыт в редакторе я запускаю поиск по документу и в поисковую строку ввожу такое сочетание <form чтобы найти первую форму на этом лендинге

что важно для отправки данных с любой формы на емайл, в параметрах открывающего тега form обязательно должны присутствовать два поля это method=»post» данный параметр показывает каким методом будут отправлены данные с этой формы, как правило везде практически он указан правильно нам нужно как раз чтобы данные отправлялись методом post если вдруг такой он не указан в форме или там указан метод GET то меняем его на POST, другой важный параметр это action=»» между кавычек указывается обработчик этой формы в примере у нас стоит ссылка на трекер партнерки откуда скачан лендинг и нам эту ссылку нужно заменить на свой обработчик 

сам обработчик мы напишем чуть позднее, а пока давайте разберемся с остальными полями формы. И здесь нам нужно найти такие теги как <input> на нашем лендинге у нас два таких поля как Имя и Телефон, которые необходимо заполнить клиенту и эти данные как раз и отправляются через инпут, вот так

и в самих инпутах есть ключевой параметр name по которому мы и будем принимать данные из этих полей в нашем обработчике, как видите в нашем случае для поля Имя name=»name» а для поля Телефон name=»phone» так вот, по идентификатору указанному в кавычках мы и будем принимать данные из каждого конкретного поля формы. В нашей форме так же есть ряд скрытых полей, узнать их легко по type=»hidden», т.е. «скрытое»

они у нас тут сделаны для передачи доп информации в партнерку, но такие поля можно использовать и самостоятельно, например прописать название формы, если хотите идентифицировать с какой именно формы пришел заказ, кроме того в таких полях можно передавать utm-метки, IP адрес клиента, откуда о пришел и т.п. Ну что же, про основные параметры формы в html я вам рассказал, теперь давайте перейдем непосредственно к обработчику формы.

Давайте создадим в папке с нашим лендингом файл send.php и в поле action укажем именно его, когда форм на странице много удобнее пакетно заменять все эти данные, в нотепаде я делаю это через функцию заменить выделяя старый обработчик и нажимая CTRL + H (актуально для винды) таким образом

все, теперь все формы будут отправлять данные уже в наш файлик, осталось только прописать в него код, который будет эти данные принимать и отправлять на нужный нам email адрес :))

Итак, открываем наш файл send.php в редакторе и добавляем туда следующий код

<?php 
$recepient = "zateh@yandex.ru"; 
$domain = $_SERVER['SERVER_NAME']; 
$name = trim($_POST["name"]); 
$phone = trim($_POST["phone"]); 
$product = 'Здесь название продукта который продаете'; 
$message = "Сайт: $domain \nПродукт: $product \nИмя: $name \nТелефон: $phone \n"; 
$mailto = "postmaster@$domain"; // от кого $headers = "From: ЗАКАЗ <".$mailto.">\r\n"; 
$headers = $headers."Return-path: ЗАКАЗ <".$mailto.">\r\n"; 
$headers = $headers."Content-type: text/plain; charset=\"utf-8\"\r"; 
$pagetitle = "ЗАКАЗ с $domain"; mail($recepient, $pagetitle, $message, $headers); 
Header("Refresh: 8; URL=".$_SERVER['HTTP_REFERER']); 
?>

это стандартный код обработки данных отправляемых формой, ниже я поясню основные моменты по нему

здесь в кавычки нужно прописать тот емайл, на который хотите принимать заказы

$recepient = "zateh@yandex.ru";

здесь автоматически определяется тот домен на котором весит лендинг

$domain = $_SERVER['SERVER_NAME'];

вот эти две строки отвечают как раз за прием данных из полей имя и телефон в форме обратной связи на нашем лендинге и тут как раз мы и указываем в квадратных скобках те идентификаторы которые стоят у на в форме в теге <input>, как вы помните это name=»name» для поля Имя и name=»phone» для поля Телефон, в обработчике мы создаем под них свои переменные $name $phone и обрабатываем post запрос идентифицируя эти данные по данным из поля name

Кроме того, я выше писал про скрытые поля, если вы хотите принимать и их, то по аналогии с двумя полями выше создаете для них уникальные переменные и и принимаете данные из форм по уникальному name для каждого такого поля.

В следующей переменной $product в кавычках можно указать название того продукта, который вы продаете.

Далее в переменной $message формируется тело нашего письма где для удобства написано что это за поле и переменная данные из которой туда и попадут.

Далее идет блок для идентификации откуда пришло письмо и заголовки, необходимые для корректной отправки

$mailto = "postmaster@$domain"; // от кого 
$headers = "From: ЗАКАЗ <".$mailto.">\r\n"; 
$headers = $headers."Return-path: ЗАКАЗ <".$mailto.">\r\n";
$headers = $headers."Content-type: text/plain; charset=\"utf-8\"\r";

В $mailto указан почтовый ящик с которого придет письмо, сейчас он сделан так что домен с которого идет отправка туда подставится автоматически, если хотите то вместо postmaster@$domain просто можете прописать туда какой-то конкретный ящик.

Важно! Если в настройках хостинга у вас не указан конкретный емайл под нужный домен, то скорее всего все такие письма будут отправляться с технического ящика вашего хостинга и тогда тот же яндекс будет определять ваше письмо как отправленной из не проверенного источника, в таком случае просто удалите в обработчике вот эти три поля и все

Ну и собственно вот тут происходит сама отправка письма и редирект с этой страницы на главную страницу нашего лендинга

Но мы с вами не сделали еще кое что, а именно, поскольку тут описана процедура простой отправки данных с формы без использования таких технологий как например ajax (отправка данных без перезагрузки страницы), то пользователю после заполнения и отправки формы откроется как раз наша страничка send.php, а она у нас сейчас пустая, т.е никакого контента для клиента мы не вывели туда. У меня есть стандартная заготовка для страницы спасибо, вот этот код мы туда и добавим, в итоге, после отправки данных пользователю откроется вот такая страничка

И через восемь секунд его перебросит опять на наш лендинг.

Ну а на емайл придет вот такое письмо с данными из формы

Ну вот собственно и все, надеюсь понятно описал эту процедуру, если что задавайте вопросы в комментах под этой статьей.

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

О программе Макс (админ)

Смотрите также

HTML верстка

HTML верстка

HTML-верстка. Общие вопросы касаемо верстки сайтов, зачем и для чего нужна html верстка, мое представление и мысли по этому вопросу.

3 комментария

  1. Блин на самом интересном месте, вы забыли прописать код для страница спасибо.. Помогите пожалуйста! Я тоже хочу такую страницу спасибо и редирект на лендинг

    • Макс (админ)

      Отправил вам на почту обработчик и в статье поправил ссылку на него, спасибо что заметили))

  2. Thank you!!1

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.