Обработчик форм
Продолжим изучение создания форм из наших уроков по 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 'Сообщение отправлено.';
?>
Для проверки работы созданной нами формы и обработчика к ней, необходимо на свой компьютер установить локальный сервер.
|