Ваш первый Сайт С использованием РНР-скриптов
ОБРАБОТКА ЗАКАЗА ОТ ПОСЕТИТЕЛЯ МАГАЗИНА
Теперь осталось нам написать код для страницы magazin2.php. Этот код, как я уже отмечал, обрабатывает заказ и данные от посетителя, выводит их в окно браузера (см. рис. 9.3) и отправляет их вам по указанному вами электронному адресу.
В РНР-редакторе создайте новый файл и сохраните его в папке magazin Под названием magazin2.php. Наберите код, как в листинге 9.4.
Листинг 9.4 (файл Magazin2.php) <Html> <Head>
<title>3anpoc</title> </head> <body> <?php
$n=$_POST['kor];
Sim j a=strip_tags($_POST [' i m j a' J);
$email=strip_tags($_POST|'emair]);
$text=strip_tags($_POST [ 'text' ]);
$zakaz="";
For ($i=l; $i<=$n; $i++) {
If($_PC)ST['kniga$ij>0) {
$zakaz="$zakazM. $_POST['avtor'.$i]." (',.$_POSTl'nazvanie,.$i].")-
,,.$_POST['kniga,.$i]." Шт<Ьг>"; }
}
$zakaz=MПоступил заказ: $zakaz<br> от клиента: $imja <br> Электронный адрес клиента: $email <br>
Адрес и контактные данные клиента: $textM; echo "$zakaz<br>";
Echo "<div id=lolo3>3AHBKa отправлена. Благодарим за 3AKa3!</div>"; mail("Interstrog@narod. ru", "Заказ на товар", $zakaz, "From: $emaiInReply-To:
$emailnContent-Type: text/plain; charset=windows-1251");
?>
</body> </html>
Разберем некоторые строчки кода: < ?php
$n=$_POST['kol'J; - все данные из формы, переданные из программы Magazin.php, будут храниться в суперглобальном массиве $_POST. Переменной $п присваиваем общее число различных книг, т. е. общее число товаров в магазине. Помните, в прошлой программе magazin.php мы - создавали скрытое поле с именем name=kol. В этом поле мы и передали на эту страницу (magazin2.php) общее число товаров в магазине;
$imja=striptags($_POST['imja'J); - аналогично переменной Simja присваиваем введенное посетителем имя в текстовом поле формы в программе magazin.php. Имя обрабатываем функцией strip Jags, которая удаляет все теги, если они были введены посетителем. Это, как вы уже догадались, делается для безопасности, чтобы какой-нибудь злоумышленник не ввел вместо имени вредоносный код;
$email=striptags($_POST['emai/']); - переменной $етаИ присваиваем введенный посетителем E-mail;
$text=striptags($_POST['text']); - переменной $text присваиваем введенный посетителем домашний адрес;
$zakaz=""; - в эту переменную мы будем записывать строку с заказом и данными посетителя (покупателя книг). Пока она у нас пуста;
For ($i=l; $i<=$n; $i++) - создаем цикл со счетчиком $i, принимающий значения от 1 до $п, где $п - общее число товаров (различных книг) в магазине.
Для лучшего понимания рассмотрим работу этого цикла при $i=l И
If($ POST ['kniga' ,$i]>0) - в прошлом листинге (9.3) именем пате='kniga/' мы назвали элемент формы - раскрывающийся список для первой книги. Элемент суперглобального массива $_POST['kniga 1'] будет содержать значение параметра value раскрывающегося списка. Если количество экземпляров первой книги пасегитель оставит равным нулю (valiie=0), то будет считаться, что эта книга просто не была им выбрана, и код в фигурных скобках под номером 2 не выполнится (действительно, зачем нам указывать, что та или иная книга была заказана в количестве ноль экземпляров). Если первая книга была выбрана (мы пока рассматриваем исполнение условия if при $i=J), т. е. параметр value>0, го код между фигурными скобками под номером 2 выполнится; 2{
$zakaz="$zakaz". $ POST['avtor'.$i]. " (".$_POST['nazvanie'.$i]. ")-
".$ POST['kniga'.$i]." Шт<Ьг>"; - формируем строку, куда запишем автора выбранной первой книги, фамилия которого содержится в элементе массива $ POST ['avtor Г] (именем name=avtorl мы назвали скрытое поле в листинге 9.3 и передали с его помощью на эту страницу значение value='$avtor[l]'), Название книги ($_POST'['nazvanieГ]) и количество выбранных экземпляров первой книги {$ POST ['kniga 1']). Все это мы записываем в одну строку, соединив данные о книге точкой (метод конкатенации). Круглые скобки и дефис обязательно заключаем в двойные кавычки;
1} - цикл for при 5/=/ (для первой книги) выполнен. Далее этот цикл снова начнет выполняться для второй книги ($i=2), если, конечно, она была выбрана (количество экземпляров не равно нулю) и т. д. После того, как будут перебраны все книги магазина, цикл полностью завершится, а в переменной $zakaz будет несколько строк с данными о всех выбранных книгах; $zakaz= "Поступил заказ: $zakaz<br> От клиента: $imja <br> Электронный адрес клиента: Semail <br>
Адрес и контактные данные клиента: $text"; - добавляем в переменную $za- kaz имя посетителя, которое он указал в форме magazin.php (листинг 9.3), его электронный адрес и домашний адрес;
Echo "$zakaz<br>"; - выводим все содержимое переменной Szakaz в браузер;
Echo "<div id=lolo3>Заявка отправлена. Благодарим за заказ!</div>"; - выводим в браузер строку с благодарностью за заказ;
Mail("Interstrog@narod. ru", "Заказ на товар", $zakaz, "From: $emailnReply- То: $emailnContent-Type: text/plain; charset=windows-l251"); - функция mail Отправит данные заказа и данные посетителя на ваш E-mail (эта функция разобрана в разд. 9.1). Вместо Interstrog@narod. ru Подставите свой электронный адрес.
Протестируем наш магазин. Для начала в редакторе запустите программу Admin.php (листинг 9.2 и рис. 9.4). Закачайте несколько книг и каких-нибудь фотографий к ним, как мы делали после разбора листинга 9.2. Теперь попробуйте заказать какие-нибудь книги. Запустите в РНР-редакторе программу Magazin.php (листинг 9.3 и рис. 9.1). Если все программы вы написали правильно, то в магазине вы увидите названия и авторов всех введенных вами книг. Выберите один или несколько экземпляров любых книг. Заполните поля для имени и адреса посетителя и нажмите кнопку «Заказать». Вы попадете на страницу magazin2.php, где увидите текст, примерно как на рис. 9.3. Если это так, то вы все сделали правильно. Внизу вы еще увидите строку ошибки, примерно следующего содержания:
Warning: Таil()[function mail]: Failed to connect... и т. д. Функция mail не сработала, и это понятно, мы же тестируем программу на локальном компьютере с локальным сервером. Эта функция будет работать только на сервере вашего хостинг-провайдера, где вы будете размещать свой сайт.
Ну вот, простой электронный магазин готов. Вам приходит по электронной почте заказ, и вы отправляете его наложным платежом заказчику. Все просто, но можно сделать еще проще. Например, продавать книги в электронном виде, которые заказчик может скачать себе на компьютер после оплаты. У вас, например, есть электронный счет (об этом в гл. 10). На вашем сайте есть электронные товары (книги, музыка, программы и т. п.) и вы хотите, чтобы посетитель мог скачать какой-либо электронный товар только тогда, когда положит на ваш электронный счет определенную сумму денег. Все это вполне реализуемо, причем купля-продажа будет делаться без вашего участия. Как только покупатель перечислит деньги на ваш счет, он автоматически переходит на страницу для скачивания электронного товара. В гл. 10 я объясню, как организовать торговлю электронными товарами на вашем сайте.