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

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

Содержание


3. Проектирование системы управления содержимым
3.2 Система управления базами данных
3.3 Способ генерации веб-страниц
3.4 Использование mod_rewrite
3.5 Проектирование БД
3.5 Работа с БД
Подобный материал:
1   2   3   4   5   6   7   8   9   10   11
^

3. Проектирование системы управления содержимым

3.1 Язык программирования


В качестве языка программирования было решено взять скриптовый язык программирования общего назначения – PHP. PHP интенсивно применяется для разработки веб-приложений. В настоящее время поддерживается подавляющим большинством хостинг-провайдеров и является одним из лидеров среди языков программирования, применяющихся для создания динамических веб-сайтов.
^

3.2 Система управления базами данных


В качестве хранилища данных была выбрана реляционная база данных MySQL — свободная система управления базами данных (СУБД). MySQL является собственностью компании Sun Microsystems, осуществляющей разработку и поддержку приложения. Распространяется под GNU General Public License и под собственной коммерческой лицензией, на выбор. Помимо этого разработчики создают функциональность по заказу лицензионных пользователей, именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

MySQL является решением для малых и средних приложений. Входит в LAMP. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.

Гибкость СУБД MySQL обеспечивается поддержкой большого количества типов таблиц: пользователи могут выбрать как таблицы типа MyISAM, поддерживающие полнотекстовый поиск, так и таблицы InnoDB, поддерживающие транзакции на уровне отдельных записей. Более того, СУБД MySQL поставляется со специальным типом таблиц EXAMPLE, демонстрирующим принципы создания новых типов таблиц. Благодаря открытой архитектуре и GPL-лицензированию, в СУБД MySQL постоянно появляются новые типы таблиц.
^

3.3 Способ генерации веб-страниц


Так же был выбран «On-line cпособ» применения шаблонов для генерации веб-страниц, т.е. шаблоны будут применяться в момент посещения пользователем страницы.
^

3.4 Использование mod_rewrite


Для перехвата и перенаправления ссылок, для их последующего вывода в виде SEF (search engine friendly – представление URL в дружественном для поисковых движков виде, пример – ссылка скрыта, вместо ?type=books&catalog=math &id=1), было решено использовать модуль mod_rewrite.

Данный модуль представляет собой основанный на правилах механизм (синтаксический анализатор с применением регулярных выражений), выполняющий URL преобразования на лету. Модуль поддерживает неограниченное количество правил и связанных с каждым правилом условий, реализуя действительно гибкий и мощный механизм управления URL. URL преобразования могут использовать разные источники данных, например переменные сервера, переменные окружения, HTTP заголовки, время и даже запросы к внешним базам данных в разных форматах, — для получения URL нужного вам вида.

Этот модуль оперирует с полными URL (включая path-info) и в контексте сервера (httpd.conf) и в контексте каталога (.htaccess) и даже может генерировать части строки запроса в качестве результата. Преобразованный результат может приводить к внутренней обработке, внешнему перенаправлению запроса или даже к прохождению через внутренний прокси модуль.

Фазы API

Для начала, нужно просто понять, что обработку какого-либо HTTP запроса, сервер Apache делает в фазах. Перехватчик этих фаз обеспечивается Apache API. Mod_rewrite использует 2 из этих перехватчиков: транслятор из URL в имя файла используемый после считывания HTTP запроса, но до начала какой-либо авторизации и перехватчик адресной привязки начинающий работать после фаз авторизации и считывания конфигурационных файлов каталога (.htaccess), но до активизации обработчика содержания.

Поэтому, после поступления запроса и определения Apache'ем соответствующего сервера (или виртуального сервера) механизм преобразований начинает обработку всех директив mod_rewrite из конфигурационного файла сервера в фазе трансляции из URL в имя файла. Несколько шагов спустя, когда находятся каталоги с конечными данными, конфигурационные директивы mod_rewrite запускаются в фазе адресной привязки. В обоих этих ситуациях mod_rewrite преобразует URL, либо в новые URL, либо в имена файлов, хотя между ними нет объективных различий. При создании API, не предполагалось его использование таким образом, однако что касается Apache 1.x это единственный возможный способ работы mod_rewrite. Чтобы внести больше ясности запомните 2 вещи:
  • Хотя mod_rewrite и преобразует URL в URL, URL в имена файлов и даже имена файлов в имена файлов, в настоящий момент API предоставляет только перехватчик для преобразования URL в имя файла. Во 2-м Apache будут добавлены 2 отсутствующих перехватчика для того, чтобы сделать этот процесс более логичным. Однако это никак не влияет на пользователя, — просто этот факт надо запомнить: Apache в перехватчике URL имя файла делает больше нежели чем это подразумевается в API.
  • Mod_rewrite проделывает URL преобразования и в контексте каталога, т.е. в файлах .htaccess, хотя они и обрабатываются намного позже трансляции URL в имена файлов. Так должно быть, потому что .htaccess файлы находятся в файловой системе, и поэтому обработка уже дошла до этой стадии. Другими словами: Согласно фазам API, — в это время уже слишком поздно управлять URL.

Обработка наборов правил

Запускаясь в этих двух фазах API, mod_rewrite считывает конфигурационные наборы правил из своей конфигурационной структуры (создаваемой либо один раз при запуске сервера, — для контекста сервера, либо каждый раз при обходе ядром Apache каталогов, — для контекста каталога). Затем запускается механизм URL преобразований с уже имеющимся набором правил (правило(а) вместе со своими условиями). Функционирование самого механизма преобразований в точности одинаково для обоих контекстов конфигурации. Различаются только конечные результы обработки.

Порядок правил в наборе важен потому что механизм преобразований обрабатывает их в специальном (и не очень очевидном) порядке. Вот это правило: Механизм преобразований просматривает весь набор правил строчка за строчкой (RewriteRule директивы) и когда находится соответствие конкретному правилу производится просмотр соответствующих этому правилу условий (RewriteCond директивы). По историческим причинам условия находятся перед правилами, и поэтому последовательность выполнения команд немного более длинная.



Рисунок 2. Схема алгоритма mod_rewrite


Экранирование специальных символов

Что касается Apache 1.3.20, специальные символы в СравниваемаяСтрока и Подстановка строках могут быть экранированы (имеется ввиду, отношение к ним как к нормальным символам без их обычного специального значения) путем предшествующего им символа слеша ('\'). Другими словами, вы можете включать символ доллара в строку Подстановка используя '\$'; это не позволит mod_rewrite относиться к нему как к обратной ссылке.
^

3.5 Проектирование БД


В базе данных системы on-line заказа 30 таблиц

Описание таблиц

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

ссылка скрыта ссылка скрыта

сms_captcha

Хранятся значения CAPTCHA

cms_components

Хранятся данные об установленных компонентах, их параметры

cms_com_guestbook

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

cms_com_news

Таблица компонента новости

cms_com_pages

Таблица компонента страница, хранится текст.

cms_com_shop_cart

Таблица компонента Интернет-магазин. Хранятся товары в корзине.

cms_com_shop_delivery

Таблица компонента Интернет-магазин. Хранятся способы доставки и их описание.

cms_com_shop_groups

Таблица компонента Интернет-магазин. Хранятся группы товаров и их описание.

cms_com_shop_items

Таблица компонента Интернет-магазин. Хранятся товары и их описание.

cms_com_shop_mesures

Таблица компонента Интернет-магазин. Таблица со списком единиц измерения.

cms_com_shop_order

Таблица компонента Интернет-магазин. Храница информация о сделанных заказах.

cms_com_shop_order_items

Таблица компонента Интернет-магазин. Храница информация о товарах привязанных к сделанным заказам.

cms_com_shop_order_status

Таблица компонента Интернет-магазин. Список возможных статусов заказа.

cms_com_shop_pay

Таблица компонента Интернет-магазин. Список возможных способов оплаты.

cms_com_shop_payments_logs

Таблица компонента Интернет-магазин. Статистика оплаты пользователями заказов ИМ.

cms_com_shop_producers

Таблица компонента Интернет-магазин. Информация о производителях товаров.

cms_com_shop_properties

Таблица компонента Интернет-магазин.Список дополнительных, динамических свойств товаров.

cms_com_shop_properties_groups

Таблица компонента Интернет-магазин. Привязка свойств к группам товаров.

cms_com_shop_properties_values

Таблица компонента Интернет-магазин. Хранятся значения дополнительных, динамических свойств товаров.

cms_com_shop_sessions

Таблица компонента Интернет-магазин. Хранится информация о текущих сессиях пользователей Интернет-магазина.

cms_com_shop_users

Таблица компонента Интернет-магазин. Хранится список зарегистрированных пользователей Интернет-магазина.

cms_groups

Список групп пользователей Административного раздела.

cms_logs

Хранятся данные журнала событий.

cms_menu_groups

Хранятся группы меню.

cms_menu_items

Хранятся разделы меню.

cms_nodes

Хранится информация о разделах сайта.

cms_params

Хранятся данные о глобальных параметрах компонентов.

cms_ratings

Используется для хранение информации о рейтингах чего либо.

cms_sessions

Хранятся данные сессий пользователей Административного раздела.

cms_users

Хранятся список пользователей Административного раздела.
^

3.5 Работа с БД


Работа с БД MySQL осуществляется с использованием класса sql_db, а так же встроенных функций mysql_ (PHP 4, PHP 5)

3.6 Дополнительно


Данные пользователя хранятся в cookies. Для повышения безопасности конфеденциальные и индитификационные данные пользователя хранятся с использованием сессий.

В качестве WYSIWYG редактора решено использовать готовое решение. FCKeditor — свободный WYSIWYG-редактор, который может быть использован на веб-страницах. «FCK» в названии FCKeditor происходят от имени создателя редактора, Frederico Caldeira Knabben.

Особенностью редактора является малый размер без необходимости инсталляции на стороне клиента.

В качестве массового загрузчика файлов также используется готовое решение swfupload.

Для визуализации и работы с AJAX используется API jQuery.