On-line заказа печатной продукции

Вид материалаДиплом

Содержание


4. Практическая реализация системы on-line заказа
Header Footer
4.1 Состав системы
4.2 Принцип работы административной части
4.3 Принцип работы пользовательской части
RewriteCond %{REQUEST_FILENAME} -s
4.5 Принцип работы on-line заказа
4.6 Описание разделов и компонентов системы управления
4.7 Административный раздел
Рисунок 5. Редактирование товара
Рисунок 12. Управление разделами меню
Рисунок 13. Файловый менеджер
4.8 Клиентская часть
Рисунок 17. Каталог продукции
Подобный материал:
1   2   3   4   5   6   7   8   9   10   11
^

4. Практическая реализация системы on-line заказа


В центре всей системы лежит, так называемое, дерево разделов. Физически разделы сайта на жестком диске не существуют, их дерево (дерево разделов) находится в БД, где каждая ветка этого дерева это раздел, который имеет идентифицирующий его адрес.

Данный подход имеет как плюсы, так и минусы. К плюсам можно отнести:
  • Информацию в БД легче хранить, обрабатывать, изменять и получать.

К минусам:
  • Страницы сайта генерируются «на лету», что при большом наплыве посетителей может серьезно замедлить работу сервера. Но эта проблема решается настройкой кэширования страниц.

Для облегчения работы с внешним видом сайта в системе используются шаблоны. Шаблон разделен на две части:
  • ^ Header
  • Footer

Header и footer хранятся в файлах на сервере, в папке шаблона. То, что находится между ними называется телом страницы, которое и хранится в БД, и за содержимое которого отвечает компонент.

Для системы управления написан набор наиболее часто встречающихся компонентов:
  • Страница
  • Гостевая книга
  • Новости
  • Интернет-магазин
  • Карта разделов
  • Обратная связь
  • Галерея изображений
  • Поиск
  • Карта сайта


^

4.1 Состав системы


Система состоит из двух главных частей:
  • Административный раздел
    Раздел через который осуществляется управление сайтом. Доступ в него имеет только авторизированный пользователь с достаточным уровнем прав.



Рисунок 3. Форма авторизации


Используется HTTP авторизация, с передачей данных в неявном виде. В явном виде пароль нигде не используется, используется его хеш-фукция, полученная по алгоритму MD5.
  • Пользовательская часть
    Непостредственно сам сайт, где пользователь и осуществляет on-line заказ.
^

4.2 Принцип работы административной части


Как уже было сказано выше, доступ в административную часть имеет только авторизированный пользователь с достаточным уровнем прав.

Используется HTTP авторизация. Прежде чем отправить данные, в частности пароль, высчитывается его хэш по алгоритму MD5, и в последствии система работает именно с ним. В открытом виде пароль не хранится.

Информация об авторизации хранится с использованием сессий, благодаря чему мы получаем гарантию, что эти данные не будут подменены или извлечены. Кроме того, в сессии хранится только временный идентификатор пользователя UID, который является ключом в таблице БД sessions и имеет ограниченный срок действия.

Через административную часть редактируется весь контент (содержимое) на сайте.
^

4.3 Принцип работы пользовательской части


В основе работы отображения URL в виде SEF (search engine friendly) лежит принцип обработки ошибки 404. При обращении пользователя по адресу та/страница/, сервер Apache в первую очередь ищет папку с именем «страница», если ее не существует, он возвращает 404 ошибку. В моем случае с помощью модуля Apache mod_rewrite и файла .htaccess настроен перехват данной ошибки и перенаправление ее на обработку.

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]

^ RewriteCond %{REQUEST_FILENAME} -s

RewriteRule ^.*$ - [L]

RewriteRule (.*)/$ index.php?%{QUERY_STRING}

ErrorDocument 403 /index.php?%{QUERY_STRING}

ErrorDocument 404 /index.php?%{QUERY_STRING}

После того как ошибка перенаправлена, адрес, по которому пользователь обращается к сайту, обрабатывается, определяется адрес и идентификатор раздела, который необходимо открыть, и после этого делается запрос в БД для получения информации по данному разделу.

Обобщая выше сказанное, приведу простой пример обработки пользовательского запроса та/страница/подстраница/.

После того как пользователь перешел по данному адресу, сервер начинает искать файл корневая_папка/страница/подстраница/index.phpl либо корневая_папка/страница/подстраница/index.php, если такой файл существует, пользователь увидит его на экране. В нашем случае такого файла нет, вследствие чего возникает 404 ошибка, благодаря файлу .htaccess запрос перенаправляется на главный файл index.php вместе со строкой запроса.

В файле index.php строка запроса (та/страница/подстраница/) разбивается на массив разделов

Array[0]=страница

Array[1]=подстраница

Далее в БД находим информацию о разделе «подстраница», с условием, что ее родительский раздел «страница» (таким образом решается проблема с одинаковым именем подразделов в разных разделах). В случае если страница не найдена, генерируется 404 ошибка. В случае если найдена, на экран последовательно выводится header, тело страницы, footer.

Перед выводом тела страницы выполняется скрипт компонента, прикрепленного к данной странице.

За работу системы on-line заказа отвечает компонент «Интернет-магазин».
^

4.5 Принцип работы on-line заказа


В основе компонента лежит каталог. Каталог имеет дерево разделов. В каждом разделе может храниться неограниченное количество товаров. Товары и разделы связаны колонкой item_group.

Каждый товар помимо стандартного набора свойств
  • родительский раздел
  • название
  • производитель
  • артикул
  • дата поступления
  • описание
  • текст
  • вес
  • количество
  • единицы измерения
  • цена
  • сортировка
  • изображение

имеет также динамические свойства, которые задаются через административную панель.

Выбрав товар, пользователь добавляет его в корзину. За корзину отвечает таблица cart. В ней хранятся ссылки на товар и на пользователя, а также количество товара. Заполнив таблицу необходимым количеством товара, пользователь переходит к процессу оформления заказа. На этом этапе в таблицу orders заносится первая информация о заказе, это пользователь и стадия оформления. Оформление заказа происходит в несколько шагов:
  • заполнение адреса (хранится в таблице users, как дополнительные колонки пользователя)
  • выбор способа доставки (выбор в последствии хранится в таблице orders, в колонке order_delivery)
  • выбор способа оплаты (также привязан к текущему заказу, хранится в таблице orders, в колонке order_payment)
  • подтверждение заказа. На этом этапе статус заказа изменяется на «на стадии оформления», либо «ожидание оплаты», в зависимости от выбранного способа оплаты заказа. Также на этапе подтверждения, ссылки на товары, хранившиеся в таблице корзины cart, переходят в таблицу order_items, где каждому товару приписывается order_id)
  • оплата заказа. В случае когда выбрана безналичная оплата, пользователю необходимо оплатить товар одним из предложенных способов.

Также компонент on-line заказа имеет свою таблицу зарегистрированных пользователей, которая никак не пересекается с таблицей пользователей самой системы управления.

Пользователи делятся на два типа:
  • Юридическое лицо
  • Физическое лицо

В зависимости от выбранного типа, процедура заказа и оплаты будут немного отличаться.

Идентификация пользователя осуществляется через e-mail, это удобно, т.к. так называемые «боты» отсеиваются еще на стадии регистрации.

Существует также система восстановления пароля, пользователь может отправить запрос на восстановление. В этом случае ему на почту высылается ссылка с контрольной строкой, перейдя по которой, пользователь подтверждает, что он является владельцем данного почтового ящика, а значит и аккаунта Интернет-магазина. В качестве контрольной строки используется MD5 хэш случайного числа, времени и IP адреса пользователя.
^

4.6 Описание разделов и компонентов системы управления


Как уже было сказано ранее, система управления разделена на две части:
  • Административный раздел
  • Клиентская часть
^

4.7 Административный раздел


Административный раздел в свою очередь делится на:
  • Управление каталогом
  • Управление заказами
  • Управление всеми вспомогательными разделами клиентской части (деревом разделов)
  • Управление меню
  • Файловый менеджер (загрузка, изменение, удаление файлов на сервере)
  • Управление пользователями (разграничение прав доступа к информации)
  • Журнал событий

Управление каталогом



Рисунок 4. Каталог товаров

Раздел позволяет добавлять, редактировать, удалять группы товаров; добавлять, редактировать, удалять сами товары; редактировать дополнительные, динамические свойства товаров.



^ Рисунок 5. Редактирование товара

Управление заказами

Раздел позволяет редактировать, удалять полученные заказы, просматривать дополнительную информацию, изменять статус, делать выгрузку в 1С, отслеживать и уведомлять об изменениях на электронную почту.



Рисунок 6. Список заказов




Рисунок 7. Подробная информация о заказе


Управление всеми вспомогательными разделами клиентской части



Рисунок 8. Дерево разделов

Раздел позволяет создавать, изменять, удалять дополнительные разделы сайта, такие как, информация о компании, обратная связь, карта сайта, новости и др.

Разделы хранятся в виде дерева, для удобства навигации по ним в клиентской части.

Каждому разделу привязан компонент, который отвечает за функционал данного раздела. Мной разработан ряд компонентов для удобства наполнения сайта информацией. Например Новости, Текстовая страница, Карта сайта и др.

Компонент страница



Рисунок 9. Редактирование страницы


Компонент новости



Рисунок 10. Редактирование новостей


Управление меню

Раздел позволяет изменять меню на сайте. В моем случает используется два меню: Главное меню, Верхнее меню. Но их количество не ограниченно.



Рисунок 11. Управление типами меню


Каждое меню содержит набор пунктов, который и отображается на сайте. Эти пункты также можно создавать, редактировать, удалять.



^ Рисунок 12. Управление разделами меню


Файловый менеджер

Служит для загрузки, редактирования и удаления файлов на сервере. В основном это файлы изображений, а также документы Word и Excel.



^ Рисунок 13. Файловый менеджер


Управление пользователями

Раздел служит для создания, редактирования и удаления зарегистрированных пользователей интернет-магазина.



Рисунок 14. Список пользователей




Рисунок 15. Управление пользователем
^

4.8 Клиентская часть




Рисунок 16. Вид клиентской части


Клиентская часть это то, что видит непосредственно пользователь интернет магазина, она содержит в себе следующую информацию

Текстовая информация (Контакты, О компании и т.д.)

Любая текстовая информация на сайте.

Каталог продукции



^ Рисунок 17. Каталог продукции

Поиск



Рисунок 18. Поиск товара


Авторизация



Рисунок 19. Авторизация


Регистрация



Рисунок 20. Регистрация

Личный кабинет

Изменение личной информации пользователя.



Рисунок 21. Личный кабинет


Корзина



Рисунок 22. Корзина товаров


Процедура заказа

Адрес доставки



Рисунок 23. Процедура заказа - Адрес доставки


Выбор способа доставки



Рисунок 24. Процедура заказа - Способ доставки


Выбор способа оплаты



Рисунок 25. Процедура заказа - Выбор способа оплаты


Подтверждение заказа



Рисунок 26. Процедура заказа - Подтверждение заказа