Обработчик форм

Продолжим изучение создания форм из наших уроков по html. В предыдущем уроке мы создали форму заказа товара. Но она еще не работает, так как у нас нет обработчика этой формы.

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

Первым делом необходимо создать файл, который будет обрабатывать форму. Открываем программу "Блокнот" - файл - сохранить как. Имя файла - пишем, например, obrabotka.php (расширение .php). Не забывайте "Тип файла" - выбираем "Все файлы". Сохраняем в папку с нашими предыдущими файлами html.

И так, файл-обработчик мы создали, осталось только прописать в нем код. Но перед этим нам надо понять один важный момент: вся информация, которую пользователь прописывает в каждом поле формы заносится в соответственный контейнер и передается в обработчик после нажатия кнопки "Отправить".

Все, что прописано в поле "Введите свое ФИО" поместится в контейнер fio (name="fio") .

Все, что прописано в поле "Введите пароль" поместится в контейнер pass (name="pass").

Все, что прописано в поле "Введите свой email" поместится в контейнер email (name="email") и т.д.

Вот таким образом работает форма. Все, что мы вводим в поля формы помещается в спец. контейнеры (переменные) и отправляется в обработчик (файл, который мы прописывали в html-коде формы):

<form action="obrabotka.php" method="POST" name="form1">

Однако, хочу сделать одно замечание. Некоторые хостинги, где вы будете публиковать свой сайт, могут не поддерживать передачу переменных методом POST сразу же в обычные переменные, а передают их только в глобальный массив $_POST["Имя"].

Т.е. перед написанием функции нам необходимо обычным переменным присвоить значение глобального массива $_POST[]. Для нашего обработчика создаем конструкцию такого вида:

Пример:

$fio = $_POST['fio'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$format = $_POST['format'];
$site = $_POST['site'];
$book = $_POST['book'];
$delivery = $_POST['delivery'];
$address = $_POST['address'];

После того, как мы сделали такую подстраховку, ниже нее можно спокойно употреблять обычные переменные $имя. Без этой записи обработчик отправит сообщение, но в сообщении не будет ни одной данной, внесенной пользователем в поля формы.

Теперь, в файле obrabotka.php, напишем функцию, которая всю эту информацию будет обрабатывать и отправлять на электронный адрес автора сайта email-сообщение со всеми данными, занесенными пользователем в форму.

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

Функция на языке php пишется внутри символов: открывающего <?php и закрывающего ?>.

Для отправки сообщения владельцу сайта пишем функцию mail. В круглых скобках прописываем три параметра. Заканчивается функция точкой с запятой.

Пример:

<?php

mail( );

?>

Каждый параметр пишем в кавычках и отделяем один от другого запятой.

Пример:

<?php

mail(" Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript ","Заказ с сайта","Текст сообщения" );

?>

Параметры нашего обработчика:

Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript - адрес эл. почты, куда будет отправлено сообщение.

Заказ с сайта - тема сообщения.

Текст сообщения - текст сообщения с данными, введенными в форму, которое будет отправлено.

Текст сообщения рассмотрим поподробнее:

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

Пример:

"На сайте был сделан заказ. Заказ пришел от: $fio

$fio - это содержимое контейнера с именем fio (данные, введенные в поле "Введите свое ФИО"). Имя контейнера (переменной) пишем со значком $.

Пишем далее:

"На сайте был сделан заказ. Заказ пришел от: $fio Его пароль: $pass Его email: $email Выбрал формат диска: $format

Далее идет - "какой курс выбрал пользователь?". Здесь небольшое усложнение.

Пользователю предлагается выбрать "Курс по созданию сайтов" и "Курс по созданию книг", а можно заказать и оба курса сразу.

Если выбран "Курс по созданию сайтов" в обработчик летит контейнер (переменная) site.

Если выбран "Курс по созданию книг" в обработчик летит переменная book.

Если выбраны оба курса - в обработчик отправляется и переменная site и переменная book.

В этом случае необходимо в обработчике прописать небольшую проверку: существуют ли такие переменные или нет?

Если какая то переменная существует - значит пользователь сделал соответственный заказ. Проверку пишем до написания функции:

Пример:

if (isset($site)) {$site="да";} else {$site="нет";}

if - с английского "если" - далее в круглых скобках "какое условие мы проверяем"

isset - с английского "существует" - и в скобках указываем что именно существует - переменная ($site)

далее в фигурных скобках пишем - что нужно в этом случае сделать - {$site="да";} - переменной site присвоить значение "да".

else - с английского "иначе" - если такой переменной не существует - {$site="нет";} - переменной site присвоить значение "нет".

Расшифруем все вместе:

если существует переменная site то переменной site присвоить значение "да" иначе переменной site присвоить значение "нет".

Такую же проверку напишем и для переменной book:

Пример:

if (isset($book)) {$book="да";} else {$book="нет";}

Дописываем текст сообщения:

Пример:

"На сайте был сделан заказ. Заказ пришел от: $fio Его пароль: $pass Его email: $email Выбрал формат диска: $format Выбрал курсы: Курс по созданию сайта: $site Курс по созданию книг: $book Выбрал тип доставки: $delivery Адрес для доставки: $address"

Само сообщение мы сформировали. Осталось подправить один момент: данное сообщение придет на нашу электронную почту одной длинной строкой. Чтобы этого не произошло нам необходимо в подходящих местах проставить переносы строк с помощью специального символа \n.

Пример:

"На сайте был сделан заказ. \n Заказ пришел от: $fio \n Его пароль: $pass \n Его email: $email \n Выбрал формат диска: $format \n Выбрал курсы: \n Курс по созданию сайта: $site \n Курс по созданию книг: $book \n Выбрал тип доставки: $delivery \n Адрес для доставки: $address"

Запишем код нашего обработчика формы полностью:

Пример:

<?php

$fio = $_POST['fio'];
$pass = $_POST['pass'];
$email = $_POST['email'];
$format = $_POST['format'];
$site = $_POST['site'];
$book = $_POST['book'];
$delivery = $_POST['delivery'];
$address = $_POST['address'];

if (isset($site)) {$site="да";} else {$site="нет";}

if (isset($book)) {$book="да";} else {$book="нет";}


mail(" Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript ","Заказ с сайта","На сайте был сделан заказ. \n Заказ пришел от: $fio \n Его пароль: $pass \n Его email: $email \n Выбрал формат диска: $format \n Выбрал курсы: \n Курс по созданию сайта: $site \n Курс по созданию книг: $book \n Выбрал тип доставки: $delivery \n Адрес доставки: $address");

echo 'Сообщение отправлено.';

?>

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