Оглавление Введение ............................................................................................................... 2 Цель работы ......................................................................................................... 5 Глава I. Анализ технологий создания активных Web-серверов ................... 6 Глава II. Программная реализация .................................................................. 13 2.1. Выбор сервера базы данных и разработка структуры данных ........... 13 2.2. Cистема администрирования для Web-приложения ........................... 16 2.3. Система аутентификации административного приложения. ............. 18 2.3. Система пользовательского интерфейса............................................... 20 Заключение ........................................................................................................ 22 Список использованной литературы ............................................................... 24 Приложение ....................................................................................................... 25 2 Введение Электронный бизнес становится одной из самых актуальных проблем современности. Электронная коммерция с использованием Web–страниц является одним из наиболее бурно развивающихся направлений всемирной сети. Еще года два–три назад большинство сайтов коммерческих предприятий носили исключительно рекламный характер, а сегодня любая уважающая себя компания предоставляет возможность совершения сделок купли– продажи в интерактивном режиме. В белорусском Интернете уже есть свои Интернет-магазины. Супероборотов своим владельцам они пока не приносят, но уже реально работают. На сегодняшний день в Интернет-каталоге Shop.by зарегистрировано 185 Интернет-магазинов. Для примера: в 2000 г. на том же Shop.by числилось лишь 63 сайта. По степени автоматизации торгового процесса способы организации Интернет-магазина делятся на: Web-витрины - совокупность каталога, системы навигации и системы оформления заказа с последующей передачей менеджеру для дальнейшей обработки. Этот вариант приемлем для специализированных магазинов с небольшим ассортиментом. собственно Интернет-магазины - к web-витрине подключается торговая система и осуществляется полный торговый цикл; Эти способы позволяют реализовать различные уровни обслуживания покупателей. Белорусские электронные магазины в основном специализируются на продаже книг, видео- и аудиозаписей, компьютеров и комплектующих. В последнее время ассортимент товаров торговых точек расширился и к ним добавились бытовые приборы, фармацевтическая продукция, 3 автозапчасти, подписка на периодические издания, подарочная и сувенирная продукция и т.д. Вне всякого сомнения, перечисленные товарные категории обладают рядом схожих характеристик, что позволяет им лидировать в продажах через Интернет. А именно: 1. Покупки этих товаров относятся к категории наиболее продуманных, совершаемых лишь после получения о них достаточно полной информации. Это означает, что, чтобы совершить хорошую покупку, покупателю необходимо получить максимальную информацию о товаре. 2. Решение о покупке данных товаров можно принять, не потрогав и не повертев в руках сам продукт (исключением является лишь одежда). Для их покупки вполне достаточно аннотаций, приведенных на сайте. 3. Каждая товарная категории включает массу товаров-аналогов, конкурентов. Прежде чем совершить покупку, необходимо выбрать из сотен аналогичных продуктов, что, несомненно, быстрее сделать в режиме он-лайн, чем лично объезжать десятки магазинов. Торговое общество с ограниченной ответственностью «Фирма Верасень» является официальным представителем Краковской станции растениеводства и овощного семеноводства «ПОЛЯН». Сегодняшняя стратегия «Фирмы Верасень» заключается в том, чтобы предлагаемые семена попали непосредственно к клиенту. Фирму интересуют мнения о сортах. Удовлетворяют ли сорта овощных культур кулинарным вкусам, а в случае цветов – эстетическим ощущениям? Универсальным средством взаимодействия интерактивного взаимодействия с клиентами является Internet. Предоставляемый товар удовлетворяет характеристикам (приведенным выше), которые позволяют 4 лидировать в продажах через Internet, поэтому существует возможность создания Internet-магазина. 5 Цель работы Целью данной курсовой работы являлось создание Internet- магазина для торгового общества с ограниченной ответственностью “Фирма Верасень”. Для достижения поставленной цели необходимо было решить следующие задачи: 1. Произвести анализ существующих технологий создания активных серверов Web, и осуществить выбор технологии для реализации Internet-магазина, исходя из возможностей, скорости, стоимости. 2. Осуществить выбор сервера базы данных и разработать структуру данных. 3. Разработать систему администрирования для Web-приложения, связанную с эксплуатацией магазина и обработкой покупок. 4. Разработать для пользовательского приложения следующие системы: навигации совершения покупки отправки заказа менеджеру 5. Произвести анализ системы аутентификации средствами PHP. 6 Глава I. Анализ технологий создания активных Web-серверов Довольно часто в той или иной периодике встречаются обзоры или результаты тестирования ограничиваются различного субъективными ПО. оценками. Как правило, Практически они всегда, интерпретация результатов тестирования носит несколько однобокий характер и часто выглядит как «выпячивание» достоинств собственной технологии. Данная глава посвящена сравнению производительности нескольких, наиболее популярных серверных языков вместе с Webсерверами, обеспечивающими их работу (данную связку: интерпретатор на стороне сервера и собственно сервер в дальнейшем будем называть серверной технологией). Рассматриваемые технологии Resin 1.1 b2 (internal web server) Orion 0.7.6b (internal web server) Tomcat (internal web server) Resin 1.1 b2/Apache 1.3.9 mod_php 4.0b2 mod_perl 1.21 JRun 2.3.3/Apache 1.3.9 ServletExec 2.2/Apache 1.3.9 CGI using Perl Для анализа производительности серверной использовались результаты тестов, приведенные в [8], технологии также схожие результаты представлены [9,10]. Для анализа производительности рассматривались результаты следующих тестов (таблица 1): File. В данном тесте производилось чтение и передача небольшого (311 байт) статичного файла — т.е. тестирования серверной технологии в качестве обычного веб-сервера. Servlet. Для измерения «накладных расходов» работы серверной технологии использовалась тестовая программа "Hello, World". Другими словами, как бы эффективно ни была написана ваша серверная программа, 7 вы никогда не получите более высокие показатели производительности, нежели в этом тесте. Hello. Тест, практически во все аналогичный тесту Servlet, с тем отличием, что применялся для тестирования PHP, Perl`a и ASP, тогда как Servlet относился лишь к Java серверной технологии. Loop. Тест выводящий "Hello, World" в цикле суммарным объемом около 64 кб. Этот тест, особенно в сравнении с тестом Big дает довольно грубое представление о производительности базовых функций. Big. В данном тесте производилась отправка сравнительно большого (около 64 кб) массива статичной информации. DB. Простейший запрос к базе данных (два запроса Select). Дает оценочное представление о производительности цепочки веб-сервер — серверная технология — сервер базы данных (точнее драйвер базы данных — сервер базы данных, даже если драйвер встроенный). Для JAVA тестов во второй части, первое число в таблице означает результаты тестирования с использованием драйвера org.gjt MySql. Второе число — результат тестирования с применением драйвера Caucho. В общем случае данный метод двойного тестирования демонстрирует важность драйвера базы данных для быстродействия системы в целом. Cache. Тот же тест что и DB, но в заголовке страницы указывался «срок давности» (Expires) плюс 15 секунд от времени исполнения Под клиентом следует понимать C программу, выступающую в роли браузера. В задачу программы входит отправка запроса, включающего типичные заголовки, а также прием ответа сервера. Таблица 1. Производительности серверных технологий (единицы измерения - операций в секунду) Технология File Servlet Hello Big DB Cache Resin/IBM 694 628 575 108 161 645 Resin/JDK1.2 509 451 480 74 474 85 8 Resin/Apache/IBM 550 390 417 55 104 438 Orion/JDK1.2 488 186 360 69 88 72 Mod_php/Apache 561 291 52 117 117 Mod_perl/Apache 550 365 92 111 111 59 59 ServletExec/Apache/IBM 536 98 103 100 94 20 50 50 67 28 7 7 25 25 24 24 Tomcat/IBM 129 CGI perl/Apache 550 JRun/Apache/JDK1.2 531 69 37 Tomcat/JDK1.2 37 62 37 12 Для однопользовательских систем результаты тестов представлены в таблице 2. Во всех тестах безусловным лидером является Resin/IBM, отчасти благодаря встроенному веб-серверу, отчасти некоторого назначения данной серверной технологии именно под высокую скорость исполнения. Собственно первую причину подтверждают несколько худшие результаты Resin/Apache/IBM, где вместо специализированного используется универсальный веб-сервер. Mod_php и Mod_perl идут практически вровень, попеременно от теста к тесту меняясь местами, за исключением теста "Big" где Mod_php показал почти вдвое меньшую производительность. CGI perl значительно уступает во всех тестах, кроме "File", где он показал результат аналогичный Mod_perl/Apache. Также рассмотрим результаты тестов многопользовательской системы, представленные в таблице 3. Данные тестовые испытания проводились по несколько другой схеме, исходными остались аппаратная платформа (RedHat 6.0 ) и сетевая инфраструктура, к исследуемым серверным технологиям добавлен ASP, (но ввиду некоторых проблем при обращении к серверу MySQL данный тест для ASP не проводился), модифицирована клиентская программа — для эмуляции «одновременной работы нескольких пользователей», 9 некоторой внутренней модификации подверглись и сами тесты но их суть их осталась прежней. Таблица 2. Тест «Один пользователь» (единицы измерения - операций в секунду) Технология File Servlet Hello Loop Big Resin/IBM 571 550 558 36 83 131/268 603 Resin/Apache/IBM 505 373 386 36 65 122/202 382 Resin/IIS 730 348 364 32 46 -- -- mod_perl/Apache 497 n/a 322 11 74 98 -- ASP/IIS 727 n/a 317 1.5 31 -- -- mod_php/Apache 504 n/a 308 13 36 130 -- Resin JS/Apache/IBM 484 n/a 254 16 61 33/118 376 DB Cache Таблица 3. Тест «Четыре пользователя» (единицы измерения - операций в секунду) Технология File Servlet Hello Loop Big Resin/IBM 1455 1187 1553 46 96 176/367 1561 Resin/Apache/IBM 880 564 575 38 91 135/237 586 Resin/IIS 1619 417 422 35 48 -- -- mod_perl/Apache 801 n/a 385 11 97 93 -- ASP/IIS 1654 n/a 385 1.4 80 -- -- mod_php/Apache 869 n/a 342 13 44 141 -- DB Cache Оценить серверную технологию по результатам приведенных тестов сложно. В первую очередь, это связано с отсутствием даже не общепризнанных стандартов для тестирования серверных технологий, а репрезентативной информации о приоритетах программистов (будь-то скорость выполнения, модульность или малая требовательность к объему 10 памяти, — а ведь все это практически взаимоисключающие приоритеты). До сих пор нет статистики по структуре используемых программ. Именно по этим причинам о производительности можно судить используя примитивные сценарии. Произведем анализ результатов. С одной стороны, созданные условия позволяли оценить чистую производительность серверной технологии благодаря созданным тепличным условиям т.к. тестовые программы это единственное, что выполняли сервер и клиент. С другой тестирование проводилось для выяснения производительности всего комплекса, а не только интерпретатора. Это привело к тому, что лидером оказался Resin/JDK (во многом благодаря встроенному Web-серверу, по своей сути быстрому, но с малыми возможностями, с другой стороны и сама технология сервлетов сказывается — для данных тестовых сценариев тезис «память в обмен на производительность» актуален). Однако, превосходство не распространяется на базы данных — доступ к ним из PHP и Perl, как правило, быстрее, чем из их Java оппонентов. В принципе это означает, что в текущих реализациях JDBC драйверов еще есть возможности для оптимизации, а сам Java тут не причем, что подтверждают высокие показатели демонстрируемые при использовании Caucho. Также заслуживает внимания динамика изменения производительности серверной технологии при росте числе обращений. Perl при росте всех показателей продемонстрировал некоторое падение производительности при обращении к базе данных, тогда как для PHP, отмечается хоть и небольшой, но все же рост. Таким образом, PHP берет верх при файловых операциях и при работе с базами данных. Perl лидирует при обращении к большому объему информации с небольшим объемом собственно вычислений — (тест Big это в основном отправка данных в выходной поток). И Perl и PHP идут практически вровень при выполнении 11 теста Loop, что означает примерно одинаковые показатели скорости выполнения простейшего сценария. Теперь рассмотрим ASP. В тесте "File" опередил все серверные технологии, однако в остальных тестах производительность упала. Большая производительность в некоторых тестах может объясняется скорее не преимуществами серверной технологии сколько особенностями операционной системы (в смысле меньшими системными издержками NT в сравнении c RedHat). С другой стороны пользователю нет дела до этого, поэтому можно сказать, что, несмотря на посредственные показатели ASP выглядит вполне достойно. Впрочем вопрос выбора между ASP и Perl/PHP по критерию скорости вообще практически никогда не ставится — серверная технология выбирается в зависимости от операционной системы и предпочтений программистов/администраторов. Делать выводы о скорости той или иной серверной технологии сложно. Скорость зависит от выбранной операционной системы, от используемого Web-сервера, от режима работы сервера, от объема используемой оперативной памяти, необходимой для исполнения каждого сценария, от структуры программы и прочих факторов. ASP и PHP представляются хорошим решением для Webприложения среднего уровня. Однако тесная интеграция PHP с MySQL, которая также настроена для Web-приложений подобного уровня, где нагрузка при выборке и закачке данных важнее поддержки транзакций, выделяет PHP на первое место. Сегодня PHP является: чрезвычайно удобным, недорогим в разработке и эффективным. По своей производительности последние версии РHP значительно обгоняют таких монстров как JSP и ASP, особенно для приложений среднего и малого масштаба. Он оснащен хорошими средствами работы с базами данных, средствами обработки XML. PHP - идеальное решение для минимального по стоимости корпоративного или презентационного сервера. 12 Основываясь на результатах приведенных тестов, а также исходя из стоимости хостинга, было принято решение использовать PHP для реализации Internet-магазина. 13 Глава II. Программная реализация 2.1. Выбор сервера базы данных и разработка структуры данных В процессе реализации поставленной задачи я создал два варианта Internet-магазина: с использованием базы данных MySQL. с использованием текстовых файлов. Хранить информацию на сервере можно несколькими способами. Первый – с использованием баз данных. Очень удобный способ хранения больших объемов информации, когда необходимо организовывать выборки, сортировать информацию по различным параметрам и т. д. Если же необходимо обработать небольшой объем информации, да еще и без каких–то ухищрений, то подойдет второй способ – размещение информации в файлах. Как сказано в документации, поставляемой с пакетом PHP, разработчики этого языка считают поддержку баз данных самым важным и значительным достоинством PHP. Язык PHP включает поддержку следующих баз данных: InterBase, mSQL, MySQL, Sybase, Adabas D, ODBC, dBase, и др. Одно только наличие поддержки ODBC делает PHP совместимым практически с любой базой данных. Было принято решение использовать MySQL потому, что это широко распространенная база данных, она легко доступна и чаще других используется в практике разработки PHPпрограмм. MySQL настроена для Web-приложений среднего уровня. Для хранения данных о товаре используется таблица card, в которой задается название продукта, цена, стоимость, путь к маленькому изображению товара (предпросмотр), путь к большому изображению товара, описание продукта, идентификатор категории к которой принадлежит товар. Для быстрого поиска нужного товара используется его группировка. 14 Все семена разделены на три группы Овощи, Цветы, Травы. В каждой группе существуют категории, которые содержат соответствующий товар. descid thid sum proc cid name price thid maxpict minpict text int(11) int(11) int(11) int(11) int(11) blob blob int(11) blob blob blob thid text type int(11) blob int(11) tid text nid news date int(11) blob int(11) blob blob В связи с небольшим ассортиментом товара, с одинаковой характеристикой, можно обойтись без использования базы данных. Во втором варианте Internet-магазина использовались текстовые файлы. Многие считают, что этот способ хранения данных нельзя назвать ни безопасным, ни производительным. Однако нарушение безопасности возможно только при просчетах разработчиков, а производительность баз данных возрастает только при большом количестве записей (порядка 10000). Ассортимент предоставляемых фирмой семян едва достигает 300 сортов. Поэтому представляется возможным организация хранения данных в текстовых файлах. Использование файлов позволяет администрировать магазин с помощью протокола FTP. Для быстрого поиска товара, в магазине предусмотрена его группировка по видам продукции. Файл groups.ovo содержит строки, задающие номер группы и ее название. Описание товара находится в файле с именем XXXYYY.ovo, где XXX – номер группы, YYY – номер продукта в группе. Изображение товара хранится в файле с именем XXXYYYZ.jpg, где при Z=1,3 маленькие изображения, при Z=2,4 большие изображения. Для описание товара используются следующие поля: 15 Title – название продукта Create – производитель Tsena – цена продукта Fasov – количество или вес продукта в упаковке text1 – краткое описание товара text2 – полное описание товара В магазине организованы консультации. Посетитель может задать интересующий его вопрос, который отправляется на E-mail менеджера. Менеджер размещает ответ в файле, который содержится в папке cons. Имя файла формируется как дата его создания в формате ГГММДД, расширение - номер раздела Internet-магазина, к которому относится вопрос. Файл имеет два поля: Quest – заданный посетителем вопрос Ansver- ответ на вопрос 16 2.2. Cистема администрирования для Web-приложения Системе администрирования включает функции: редактирования новостей, категорий, продукции, скидок на продукцию добавления новостей, категорий, продукции, скидок на продукцию удаления новостей, категорий, продукции, скидок на продукцию функция смены пароля. Функции администрирования производятся с использованием основных операций с базами данных. Прежде чем приступить к работе с базой данных, сценарий PHP устанавливает соединение с сервером MySQL, выбирает нужную базу в качестве текущей. Далее с помощью SQL запросов обновляются таблицы, выбираются из них нужные данные в соответствии с заданным критерием. Установка соединения с сервером MySQL в Internet-магазине производится с помощью обычного соединения, которое закрывается автоматически при завершении сценария PHP. Пример соединения базы данных и выборки из таблицы type <? $connection=mysql_connect(localhost,"",""); 17 if(!$connection) { echo "<br>"."<h1>Error connection MySQL server</h1>"; } else mysql_select_db("ds") or die("Error connection <b>nagorny<b> database."); $query="select * from type"; $result=mysql_query($query); ?> Доступ к системе администрирования включает систему аутентификации. Заказы менеджера. посетителей для обработки отправляются на E-mail 18 2.3. Система аутентификации административного приложения. Программа представлена вложенным файлом perm.php. Следовательно, подобный файл можно вложить в любую страницу, которая требует аутентификации пользователя. <?session_start()?> <? if (isset($str)) { $file= fopen ("user.p", "r"); $s=fgets ($file,100); fclose($file); if ($str!==$s) { echo"<center><big>У вас нет прав для администрирования!!! :( <big></center>"; exit; } } else { echo"<center><big>У вас нет прав для администрирования!!! :( <big></center>"; exit; } ?> Аутентификация производится с помощью хэш-функции md5, которая использует алгоритм MD5 Message-Digest Algorithm компании RSA Data Security Inc. Хэш-значение введенного пользователем пароля сравнивается со значением, хранящимся в файле user.p. В случае 19 совпадения, создается сессия и регистрируется переменная с хешзначением пароля. Управление сессией в PHP довольно гибко. Имеется возможность менять способ использования переменных сессии приложением, место хранения переменных на сервере, срок хранения информации о сессии. В переменных сессии необходимо хранить только те переменные, которые удовлетворяют следующим критериям: Переменная используется на протяжении всей программы, почти на каждой странице. Переменная уникальна для данной сессии. Переменная представляет собой первичные данные. После того как отработали программы администрирования, на диске был найден файл sess_fdbda988d1c9ca03aa15c57d3a5dba1f, в котором были такие данные информация о str|s:32:"5f4dcc3b5aa765d61d8327deb882cf99";. сессии хранится в файлах с Значит именами вида sess_$PHPSESSID, а идентификатор сессии передается с использованием файлов Cookie. Такой механизм сессий в PHP4 используется по умолчанию, при необходимости его можно изменить. В связи с этим при завершении администрирования необходимо вызвать сценарий уничтожающий все данные связанные с текущей сессией. В разработанном приложении нажать на ссылку выхода из администрирования. 20 2.3. Система пользовательского интерфейса Фактически клиентское приложение Internet-магазина состоит из нескольких компонентов, объединенных в рамках одного узла Web: Древовидный каталог семян, предназначенный для поиска по классовой принадлежности. Лента новостей, содержащая сообщения о появлении в продаже новых семян или о других событиях, связанных с работой магазина. Модуль оформления заказа, позволяющий рассчитать стоимость заказа. На первой странице расположена лента новостей, которая формируется средствами сценария расположенного в файле main.ds из таблицы news, содержимое которой готовится сотрудниками Internetмагазина средствами административного приложения. На странице просмотра списка семян, расположенной в файле market.php посетитель может отобрать понравившиеся ему семена В начале работы сценарий создает соединение с MySQL, выбирает требуемую базу данных. Далее производится выборка данных, соответствующих заданным критериям, и если требуемые записи есть, запускается цикл формирования отчета в виде таблицы, содержащей поля извлеченного набора записей. Для каждой записи в создаваемую таблицу вставляется ссылка на страницу ord_add.php, средствами которой можно добавить семена в «корзину» покупателя. Корзина в магазине организована с использованием файлов Cookie. В файлах Cookie хранится идентификатор товара, выбранного посетителем виртуального электронного магазина и его количество. Покупатель отмечает разный товар на разных страницах сервера. При этом полный заказ вначале формируется и хранится в Cookie, а затем по явному запросу 21 пользователя переправляется на E-mail менеджера, при этом формируется полный отчет о произведенной клиентом покупке. 22 Заключение Цели данной курсового работы были успешно достигнуты. Произведен анализ современных серверных технологий создания активных Web-серверов. Была изучена технология PHP: синтаксис, типы данных, операторы, операторы управления потоком выполнения, основные функции работы с файлами, с базой данных MySQL. Средствами технологии PHP были созданы интерактивные Webприложения, без использования расширения CGI или ISAPI. Разработаны два Internet-магазина с различным способом хранения информации. Разработана система администрирования для Web-приложения, связанную с эксплуатацией магазина и обработкой покупок. Разработаны для пользовательского приложения следующие системы: навигации совершения покупки отправки заказа менеджеру Произведен анализ системы аутентификации средствами PHP. В планах было интегрировать магазин c платежной системой, однако из-за неразвитости Интернет-торговли эта услуга экономически не выгодна. Среди причин зачаточного состояния Интернет-торговли в Беларуси можно назвать следующие: недоверие крупного и среднего белорусского бизнеса к возможностям Интернета; неразвитость платежных средств; отсутствие системы доставки (сроки и гарантии обычной почты мало кого устраивают, основные расчеты при выполнении заказов 23 производятся наличными, а курьерская служба должна одновременно производить инкассаторские функции, отдать же инкассацию “в чужие руки” никто не хочет, и это тормозит создание независимых служб доставки); слабое доверие потенциальных покупателей; небольшое количество пользователей Интернета; бедность населения в целом. 24 Список использованной литературы 1. Фролов А., Фролов Г. “Практика применения PERL, PHP, APACHE и MySQL для активных Web-сайттов” // Русская редакция “Питер-Пресс“ - СПб – 2002. 576 стр. 2. Фролов А., Фролов Г. “Создание Web-приложений“ // Русская редакция “Питер-Пресс“ - СПб – 2001 –1040 стр. 3. Фролов А., Фролов Г. “Связь Web-приложений с базами данных“ // Русская редакция “Питер-Пресс“ - СПб – 2000 – 487 стр. 4. Microsoft Developers Network 2000 5. Блейк Швендимен “PHP4 Руководство разработчика“ // Вильямс – Москва – 2002 – 688 стр 6. Официальный сайт PHP // http://www.php.net 7. Официальный сайт базы данных MySQL // http://www.mysql.com 8. Журнал «СОФТЕРРА» http://www.softerra.ru/ 9. Еженедельник «Компьютер Price» // http://www.comprice.ru/ 10. System Administration and Networking Conference SANE 2002, pages 103-119, May 2002, http://www.dmst.aueb.gr/dds/pubs/conf/2002-SANEDynCont/html/dyncont.html 25 Приложение 26 27