Ваш первый Сайт С использованием РНР-скриптов
ПРОСТЕЙШИЙ КНИЖНЫЙ ИНТЕРНЕТ-МАГАЗИН
Вот мы и дошли до Интернет-магазина. Сейчас покупка по Интернету становится таким же обычным делом, как и покупка в реальном магазине. Пока данный вид торговли в нашей стране составляет малую долю от общего товарооборота, но в недалеком будущем, я уверен, большинство покупателей будут приобретать товары сидя за компьютером, а не бегать по магазинам за поиском того или иного товара. Вы заказываете товар, оставляя свои контактные данные и адрес на сайте магазина, и получаете через несколько дней свой заказ. Расплачиваться можно либо наложным платежом, при получении заказа, либо сразу электронными деньгами (об этом чуть позже). Мы создадим на сайте простой Интернет-магазин. С пом(кцью РНР можно легко сделать мини-Интернет-магазин, т. е. установить на сайт форму заказа, которая будет отправляться вам по электронной почте. Посетитель выбирает товар, оставляет в текстовых полях формы свой электронный и домашний адреса и отправляет заказ вам по электронной почте. Причем отправка осуществляется автоматически, при нажатии в форме кнопки «Отправить». Наш электронный магазин будет выставлять на продажу книги, хотя вы сами можете выставить все, что угодно. Продаваемые книги будут выведены в ячейки че - тырехколонной таблицы. У меня, например, там выведено 6 книг (рис. 9.1). Посетитель, придя на главную страницу магазина (она у нас будет называться magazin.php), выберет себе книгу, количество экземпляров. Внизу будет показана общая стоимость выбранных книг. Если он захочет узнать какую - либо информацию о книге, то ему будет достаточно нажать кнопку мыши на ее названии, и тогда в отдельном окне выведется интересующая нас информация, а также фотография товара (книги) (рис. 9.2).
198 |
После заполнения текстовых полей «Ваше имя», «Ваш E-mail», «Адрес доставки», посетитель нажимает кнопку «Заказать». Все, заказ направляется на ваш электронный адрес и выводится в удобочитаемом виде, а посетитель направляется на страницу, где видит свой заказ и благодарность за него (рис. 9.3).
Йтатт
Интернет-магазин,
Укажите свобкш», тШШ-ш |
Выберите товары, которые вы хотите приобрести, указав
А. В? ааеяа (50PJ6) "ГЗ |
(100 и*> £ояи«й:етв« зкземюйфов: |
Д. tояето! £ояичеств« зкзенпщхт- |
С Есенин Сборник стихов _^ачество шаешиифев. |
4 Тожяо* Шт <20*>уб) КоЛЯЧвССВб ЭКЗСМПЛЯрО»' |
А. Воройлов Sahara Соаа^оЙ СЙСТСМЫ С^руб.) £ОЯ|РИГСТ8<> экземпляре»; |
КвЙИЧвСТ^О ЗОКСЗСННЫ* КНИГ, $ , : - f -.f К*j - ^- - ' Qtom Cywm жша: 595 , ^ |
ВавБ-ш*! Адрес доставка- |
Л Яувджя Сборяюсетйхов £«я«чешк> яаямгаиро» |
(loopje.) Количество экземпляров ГЦ |
А. Т«ястой Шт Экземпляров ОЗ |
Л Воронцов ТЗ |
Обцсм сумлм
Рис. 9.1 Назад |Xj [tfj ^ ^ Поиск ^Избранное ф Адрес Http //localhost/MvBooMmaga? in/books/booto006 Q Переход Ссылки w |
А-Воронцов Плшетьх Солнечной ЫШШа. /
•ПО СсяаечноЙ системы |
@Готово |
. ^ Местная интрасвть |
..................................... - '............ л:-<;:;••*»
Ms
Рис. 9.2 |
Шшнм
Поступил заказ А Пушкин (Сборник стихов)-1 шт М Булгаков (Собачье сердце)-2 шт JI Толстой (Война и мир)-3 шт | ' А. Воронцов (Планеты Солнечной системы)-3 илот клиента. Александр
Электронный адрес клиента Interstrog@narod пд jj Адрес и контактные данные клиента. 126000, Москва, ул. Белогвардейская, д. 12, кв. 33
Jj Заявка отправлена. Благодарим за заказ!
Рис. 9.3
Для отправки заказа на ваш электронный адрес используется встроенная php-функция mail(email, tema, soob, zagolovki). Первый аргумент email- электронный адрес получателя, т. е. ваш электронный адрес. Второй аргумент Tema - тема сообщения, третий аргумент soob - само сообщение. Четвертый, необязательный аргумент zagolovki - заголовки сообщения. Заголовки бывают следующих видов:
From - содержит электронный адрес отправителя, т. е. в нашем случае - адрес посетителя, сделавшего заказ в магазине;
Reply-To - позволяет указывать адрес для ответа на сообщение; Content-Type - указывает тип содержимого сообщения (text/plain или text/html). Например, для нормальной отправки сообщения на русском языке необходимо передать заголовок: Content-Type: text/plain; charset= Windows-1251;
Content-Transfer-Encoding - указывает количество бит для передачи символа (для сообщений на русском языке необходимо 8 бит). Для нормальной отправки сообщения на русском языке необходимо передать заголовок: Content- Transfer-Encoding: 8bit.
После каждого заголовка обязательно указывается символ новой строки п.
Приведу Пример: Mail("Interstrog@narod. ru", "Тест", "Всем Привет!", "From: Noname@narod. ru nReply - То: noname@narod. runContent - Type: text/plain; charset=windows-l 251").
Функция mail отправит на адрес Interstrog@Narod.Ru сообщение от посетителя с адресом Noname@Narod.Ru. В сообщении с темой «Тест» будет фраза «Всем привет!».
Новый товар в магазин будет добавляться вами через административную панель (файл admin.php), где вы будете указывать автора и название поступившей в продажу книги, опишите эту книгу и загрузите на сервер фотографию товара (рис. 9.4). После нажатия вами кнопки «Отправить» будет создана новая PHP-страница для данного товара и фотография. Все данные о товаре, введенные вами в административной панели, и его фотография и будут выведены на созданной странице, которая будет вызываться кликом мыши на названии книги на главной странице магазина (см. рис. 9.2).
Рис. 9.4 |
Вход на страницу admin.php мы, естественно, закроем паролем, чтобы заходить на нее смогли бы только вы. Для этого надо вспомнить, как мы создавали административную панель для редактирования и написания новостей для сайта (файл redaktNovost.php в гл. 5).
Если вы разобрались с предыдущими главами, то код нашего электронного магазина не должен вызвать у вас затруднений. Если что-то подзабыли, повторите разбор кода для файла redaktNovost.php, а также разбор кода для файла statji.php (листинг 6.3). В файле statji.php мы использовали теги <meta> для вывода названий и авторов статей. Нечто похожее мы будем использовать и в этой главе. В теги <meta> мы будем записывать автора книги, название книги, цену за книгу и выводить содержимое этих тегов на главную страницу магазина.
Итак, в рабочей папке htdocs создайте новую подпапку magazin. Именно в ней мы и будем хранить все файлы нашего электронного магазина. Чтобы не «изобретать велосипед» в созданную подпапку magazin скопируем созданные раньше программы, которые нам понадобятся. Из папки risynki, которую мы создали в прошлой главе, скопируйте файл zagryzka.php (листинг 8.6) и вставьте в папку magazin. Эта программа, если помните, загружает графические файлы на сервер. Мы ее немного изменим. Откройте файл zagryzka.php в РНР-редакторе (открывать нужно из папки magazinl). Уберите в начале кода строку вместе с открывающейся фигуркой скобкой:
If ($_POST['otpr 7==true) {■
В конце кода нужно, естественно, убрать и одну закрывающуюся скобку:
}■
Измените строку: If(Сору($_FILES["zak "]["tmp name "], "kart/". $file)) На Строку:
If(copy($ FILES ["zak"] ["tmp_name"], "books/fotoshop/".$file)). У нас фотографии товаров будут храниться в папке fotoshop, которая, в свою очередь, будет находиться в папке books (эти папки создадим позже).
Еще удалите строку:
Echo "<а href=# onClick= 'history. backQ '><ЬиПоп>Вернуться</ЬиПоп></а> Поскольку она здесь не будет нужна.
Если вы все сделаете правильно, то файл zagryzka.php из папки magazin Будет выглядеть, как в листинге 9.1.
Листинг 9.1 (файл Zagryzka. php из папки magazin) <?php
$zak=$_POST['zak'];
$file=$_FILES['zak']['name'];
$size=$_FILES[,zak,][,size, l;
If($size> 1024*1024*2)
{
Echo "Размер файла не должен превышать 2 МБ! Повторите попытку.<Ьг>";
Exit(); }
$ext=array(".jpg",".gif',".png",".JPG",".GIF",".PNG");
If(in_array(strrchr($flle, "."), $ext)) {
If(copy($_FILES["zak"]["tmp_name"b "books/fotoshop/".$file)) {
Echo "Файл ".$file." объемом: ".$size." байт успешно закачан!<Ьг>"; }
Else {
Echo "Ошибка при закачке файла! Повторите попытку.<Ьг>";
Exit(); }
}
Else {
Echo "Расширение закачиваемых файлов должно быть jpg, png или gif! Повторите попытку.<Ьг>";
ExitO; }
?>
Это почти копия листинга 8.6 из гл. 8, поэтому разбирать я его не буду. Далее из папки novosti скопируйте файл для создания пароля newpa- rol.php (листинг 5.5 из гл. 5) и тоже вставьте его в папку magazin. В эту же папку скопируйте и листы стилей stil.css, stili2.css (я их создавал с такими названиями) либо создайте новый файл стилей, который вы будете использовать для оформления текста.
В папке magazin создайте теперь новую подпапку books, где будут находиться программно созданные страницы и картинки для каждого товара. Теперь в подпапку books скопируйте опять листы стилей, чтобы текст на программно созданных страницах был тоже красиво оформлен. И, наконец, если вы хотите хранить фотографии товаров в отдельной папке, то ее тоже нужно создать. Создайте в папке books подпапку fotoshop, где и будут храниться эти фотографии (названия всех подпапок можете задать свои, но при этом вы должны указать эти названия в кодах программ). Итак, в главной рабочей папке htdocs мы создали папку magazin. В папке magazin создали папку Books, а в папке books создали папку fotoshop. Теперь можно создавать основные страницы для нашего магазина. Их будет 3, и все они должны быть сохранены в папке magazin. Первый файл magazin.php будет являться главной страницей или витриной вашего магазина, на которой будут выставлены товар и форма для отправки заказа от посетителя (рис. 9.1). Там же будет находиться и калькулятор для подсчета общей стоимости выбранных книг. Второй файл magazin2.php будет обрабатывать данные посетителя, показывать текст с заказом в браузере (рис. 9.3) и отправлять этот текст к вам на E-mail. И, наконец, третий файл admin.php будет являться вашей административной панелью с формой, при помощи которой вы сможете добавлять новый товар (книгу) на витрину магазина и закачать фотографию для данного товара. Эта же программа создает новую PHP-страницу для каждого товара с описанием и фотографией этого товара (рис.9.2), которую посетитель при желании может посмотреть.