|
ВІДПРАВКА ЗАМОВЛЕННЯ
Після оформлення замовлення і натиснення відвідувачем кнопки відправки форми станеться перехід на сторінку, вказану в заголовку цієї
форми (у даному сценарії - 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.V/courierms. narod. ru)).
Як параметр "Кому" може виступати набір адрес, розділених комами.
"Додаткові заголовки" можуть бути будь-які з допустимих поштовими протоколами, розділятися вони повинні комбінацією символів /п, яка в РНР означає переведення рядка. Якщо серед "Додаткових заголовків" не вказано поле From, то воно заповнюється по умолчаніюпочтової програмою, встановленою на web-сервере, наприклад, ім'ям "Unprivileged User".
Для відправки листа із замовленням необхідно приготувати його текст. Можна, звичайно, просто включити в лист значення всіх змінних з іменами, рівними кодам товару (тобто отримані з елементів <select...>), і в кінець додати контактні дані відвідувача. Але куди як краще, щоб власник web-сайта отримував не набір код, які він ще повинен за своїми даними перевести в назви, а вже готовий список замовлених відвідувачем товарів (ріс.5.5). Для цього в текст сценарію включимо блок визначення повної назви товару за його кодом.
Ріс.5.5. Лист із замовленням. Зручно читати - зручно виконувати
Отже, в будь-якому місці файлу-обробника форми, але краще всього на початку, слід помістити наступний сценарій:
<?php
$zak="";
(У цю змінну послідовно збиратимемо назви замовлених товарів.)
if ($TOV1>0){$zak="$zak Назва товару 1 -$TOV1 шт.\n"; }
if ($TOV2>0){$zak="$zak Назва товару 2 -$TOV2 шт.\n"; }
...
І такі ж строчки - для кожного товару. Як ім'я змінної в умовній частині блоку if ($ . . . >0) вказується значення параметра паті відповідного тега <select. . .>, а в подальших фігурних дужках - назва того товару, до якого цей тег відносився на сторінці-вітрині. В результаті в тому випадку, якщо відвідувач змінив значення якого-небудь випадного списку на число, відмінне від нуля, то в змінну Szak, яка згодом стане текстом листа, що відправляється, включається назва товару, відповідного цьому випадному списку, і зведення про кількість його замовлених одиниць - та величина, яка врешті-решт і виявилася значенням цього випадного списку.
Тепер завершимо складання тексту листа:
$zak="C адреси $email від замовника з контактними даними $contact прийшла заявка на придбання товару: \n$zak";
і відправимо лист-заявку:
mail ("електронна адреса власника сайту", "Замовлення на товар" $zak, "From: $email\nReply-To: $email\nContent-Type: text/plain; charset=windows-12 51");?>
В результаті виконання цієї команди той, хто обробляє замовлення, отримає акуратний список замовлених товарів і зведення про замовника (див. ріс.5.5). Причому якщо відвідувач правильно ввів свій е-mail, то для зв'язку з ним після одержання листа досить натискувати кнопку "Відповісти" або їй подібну в поштовому клієнтові - цей e-mail підставляється в заголовок листа From:.
Лист буде відправлений через поштову програму, що знаходиться на сервері, - програми на комп'ютері відвідувача ніяк не торкнуться.
Сам же файл, в якому розміщений код відправки листа, може містити, скажімо, вдячність відвідувачеві за замовлення - ріс.5.6 або відомості про те, куди звертатися за інформацією про етап його виконання. HTML-код сторінки просто поміщається услід за закінченням сценарію на РНР і виводиться в браузер після закінчення роботи сценарію.
 Ріс.5.6. Замовлення зроблене - можна вирушати і чекати...
У приведеному сценарії замість однойменних елементів форми змінних можна використовувати і відповідні елементи масивів $HTTP_POST_VARS і (у РНР версії старше 4.1) SPOST. Наприклад, рядок додавання в текст замовлення нового товару виглядатиме як
if ($HTTP_POST_VARS['Tov1']>0){$zak="$zak Назва товару 1 -
".$HTTP_POST_VARS['Tov1']." шт.\n"; }
рядок генерації листа - як
$zak="C адреси ".$HTTP_POST_VARS['email']. " від замовника з контактними даними
".$HTTP_POST_VARS['contact']." прийшла заявка на придбання товара:\n$zak";
і команда відправки листа - змінена за тим же принципом. |