Отправка заказа
После оформления заказа и нажатия посетителем кнопки отправки формы произойдет переход на страницу, указанную в заголовке этой формы (в рассматриваемом сценарии – zakaz.php). Именно в этом файле содержится программа отправки заказа.
При передаче формы сценарию на РНР содержимое каждого элемента переданной формы (для поля ввода текста – введенный текст, для элемента <select…> – значение параметра value выбранного пункта <орtion>) помещается в переменную, имя которой равно значению параметра пате данного элемента (Так происходит, если в файле pkp.mi установлен в on параметр register_globals). Кроме того, все эти значения помещаются в одноименные соответствующим значениям параметров пате элементы массива $HTTP_POST_VARS (если форма передана методом POST) или $HTTP_GET_VARS (если форма передана методом GET) (Так происходит, если в файле php.ini установлен в on параметр track_vars), а в РНР версии 4.1 и выше – еще и в массивы $_POST и $_GET соответственно. Например, значение элемента <select name="TOV1"> будет доступно сценариям на странице-обработчике в переменной $TOV1 и в элементе массива $HTTP_POST_VARS [ "TOV1' ] (а в РНР версии 4.1 и старше – еще и в элементе массива $_POST [ ' T0V1' ].
Однако особенностью использования этих массивов в частности является то, что для присоединения значения любого их элемента к какой-либо строковой переменной нельзя просто поместить их внутрь текста строки – нужно использовать оператор сложения строк: точку. Скажем, написать:
$zak="$zak $HTTP_POST_VARS['TOV1']";
…нельзя – надо использовать формат:
$zak="$zak "$HTTP_POST_VARS['TOV1'];
Отправка письма осуществляется командой mail, как вы помните, имеющей формат:
тай ("Кому", "Тема", "Текст сообщения", "Дополнительные заголовки");
При выполнении данной команды на сервере формируется электронное письмо в соответствии с указанными параметрами и отправляется с помощью установленной на web-сервере почтовой программы (Вы можете установить такую программу и на своем компьютере – используйте, например, Office Mail Server Юрия Кучуры (доступен с http://eu3eu.chat.ru) или Courier Mail Server Романа Ругаленко (доступен с http://courierms.narod.ru)).
В качестве параметра "Кому" может выступать набор адресов, разделенных запятыми.
"Дополнительные заголовки" могут быть любые из допустимых почтовыми протоколами, разделяться они должны комбинацией символов /n, которая в РНР означает перевод строки. Если среди "Дополнительных заголовков" не указано поле From, то оно заполняется по умолчанию почтовой программой, установленной на web-сервере, например, именем "Unprivileged User".
Для отправки письма с заказом необходимо приготовить его текст. Можно, конечно, просто включить в письмо значения всех переменных с именами, равными кодам товара (т. е. полученные из элементов <select…>), и в конец добавить контактные данные посетителя. Но куда как лучше, чтобы владелец web-сайта получал не набор кодов, которые он еще должен по своим данным перевести в названия, а уже готовый список заказанных посетителем товаров (рис. 5.5). Для этого в текст сценария включим блок определения полного названия товара по его коду.
Рис. 5.5. Письмо с заказом. Удобно читать – удобно выполнять