On-line заказа печатной продукции
Вид материала | Диплом |
Содержание3. Проектирование системы управления содержимым 3.2 Система управления базами данных 3.3 Способ генерации веб-страниц 3.4 Использование mod_rewrite 3.5 Проектирование БД 3.5 Работа с БД |
- Извещение о размещении муниципального заказа путем запроса котировок на поставку печатной, 670.32kb.
- Извещение о размещении муниципального заказа путем запроса котировок на право заключения, 3465.92kb.
- Республиканский конкурс на лучшую организацию реализации печатной продукции. Конкурс, 46.48kb.
- От 200 Временное положение о Системе отраслевого аудита распространителей печатной, 150.09kb.
- Техническое задание на оказание услуг по закупке и доставке книгопечатной продукции, 787.15kb.
- Курс семестр Всего зачетных единиц Трудоемкость дисциплины в часах, 26.33kb.
- Извещение о размещении муниципального заказа путем запроса котировок на поставку печатной, 1054.43kb.
- Expression Line Complex 5 Линия diamond 7 special fx line 17 spa line коллекция, 5511.84kb.
- Список печатной продукции, изданной и отпечатанной редакционно-издательским отделом, 1221.65kb.
- Дуальным аудитором на этапе заключения Соглашения об участии аудируемого лица в проекте, 118.55kb.
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.