Система управления контентом портала учебно-методической литературы
Понятие и виды информационных ресурсов, обзор систем управления контентом. Разработка проекта системы управления контентом портала учебно-методической литературы. Описание процедуры запрос-ответ между браузером и CMS Drupal, работа с сессиями и cookies.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | дипломная работа |
Язык | русский |
Дата добавления | 08.03.2012 |
Размер файла | 2,2 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Министерство образования и науки Российской Федерации
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования «Алтайский государственный университет»
Физико-технический факультет
Кафедра Вычислительной техники и электроники
УДК 004.415.23
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
К ДИПЛОМНОМУ ПРОЕКТУ
Система управления контентом портала учебно-методической литературы
БАРНАУЛ 2011
РЕФЕРАТ
Пояснительная записка 77 с., 13 рис., 14 источников.
Цель дипломного проекта - проектирование системы управления контентом портала учебно-методической литературы.
Проведен анализ готовых решений и обзор используемых инструментариев для решения поставленной цели.
Проведен системный анализ приложения как системы разбор на подсистемы. В каждой из подсистем выделяются основные модули, отвечающие за выполнение соответствующих им функций.
Описаны технологии, которые необходимо использовать в данной работе, процедура запрос-ответ между браузером и CMS Drupal, аутентификация в Active Directory, работа с сессиями и cookies. Показан интерфейс портала.
Приведена оценка рабочего места на соблюдение норм и правил приведенных в соответствующих нормативных документов.
Заключительная глава содержит организационно-экономические расчеты по затратам на разработку данного продукта.
В результате проделанной работы должен быть спроектирован и реализован программный продукт «Портал учебно-методической литературы».
СОДЕРЖАНИЕ
- ВВЕДЕНИЕ 5
- ГЛАВА 1. Информационные ресурсы и информационные системы 6
- 1.1 Информационные ресурсы 6
- 1.2 Виды информационных ресурсов 7
- 1.3 Информационные системы 10
- 1.4 Обзор систем управления контентом 13
- 1.5 Служба каталогов Active Directory 17
- 1.6 Поиск информации 19
- 1.7 Вывод 19
- ГЛАВА 2. Проектирование 20
- 2.1 Постановка задачи 20
- 2.2 Системный анализ 20
- 2.2.1 Модуль GUI 22
- 2.2.2 Модуль аутентификации 24
- 2.2.3 Модуль хеширования паролей 24
- 2.2.4 Модуль аутентификации в LDAP 24
- 2.2.5 Модуль авторизации 24
- 2.2.6 Модуль управления базой данных 25
- 2.2.7 Модуль поиска 25
- 2.2.8 Модуль комментариев 25
- 2.2.9 Модуль новостей 26
- 2.3 Клиент-серверный анализ 26
- 2.4 Вывод 28
- Глава 3. Реализация 29
- 3.1 Выбор инструментария 29
- 3.2Структура CMS Drupal 31
- 3.3 Аутентификация пользователя в Active Directory 33
- 3.3.1 Настройка модуля 33
- 3.3.2 Реализация 35
- 3.4 Сессии и cookies 36
- 3.4.1 Сессии 37
- 3.4.2 Cookies 38
- 3.5 Запрос-ответ 40
- 3.5.1 Стек технологий Drupal 40
- 3.5.2 Процесс начальной загрузки 41
- 3.5.3 Массив элементов меню 43
- 3.6 Интерфейс 47
- 3.7 Вывод 50
- ГЛАВА 4. Охрана труда 51
- 4.1 Описание помещения 51
- 4.2 Оценка воздействия шума 53
- 4.3 Оценка труда по показателям тяжести и напряженности 54
- 4.4. Оценка показателей микроклимата 56
- 4.5 Оценка химического фактора 57
- 4.6 Оценка освещения рабочего места 58
- 4.7 Расчет естественного освещения рабочего места 60
- 4.8 Техника безопасности, пожарная профилактика и электробезопасность 63
- 4.9 Вывод 63
- Глава 5. ОРГАНИЗАЦИОННО-ЭКОНОМИЧЕСКИЙ РАЗДЕЛ 65
- 5.1 Расчет затрат на заработную плату персоналу 66
- 5.2 Расчет стоимости машинного часа 67
- 5.3 Расчет итоговой себестоимости программного продукта 69
- 5.4 Вывод 69
- Заключение 70
- СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ 71
ВВЕДЕНИЕ
Внедрение средств вычислительной техники, доступность и актуальность информации, объем и скорость ее обработки становятся решающими факторами развития науки, культуры, общественных институтов и многих сфер жизнедеятельности человека. Информация и данные все чаще рассматриваются как жизненно важные ресурсы, которые должны быть организованы таким образом, чтобы ими можно было легко пользоваться.
Основные идеи современных информационных технологий базируются на концепции, согласно которой данные должны быть организованы в базы данных, с целью адекватного отображения изменяющегося реального мира и удовлетворения информационных потребностей пользователей.
ГЛАВА 1. Информационные ресурсы и информационные системы
1.1 Информационные ресурсы
Информационные ресурсы - это совокупность данных, организованных для получения достоверной информации в самых разных областях знаний и практической деятельности. Законодательство Российской Федерации под информационными ресурсами подразумевает отдельные документы и отдельные массивы документов в информационных системах.
Информационные ресурсы подразделяются по классам собираемой информации.
К первично собираемой информации, т.е. той, которая отражает специфику ее источника, области или сферы создания, возникновения, относится информация, образующаяся самостоятельно в природных условиях (например, количество колец на спиле дерева, свидетельствует о его возрасте). Информация о количественных и качественных характеристиках разных социальных процессов образуют класс "снимаемой информации". Выделенные по этому признаку информационные ресурсы можно классифицировать как естественные, производственные, социально-экономические. Например, информация о росте населения.
Другой класс информационных ресурсов образует сведения, данные, получаемые искусственно в процессе научно-исследовательской деятельности, а также любой творческой работы. Он базируется на обработке уже имеющейся информации по специальным параметрам и моделям (математическая обработка, логическая, семантическая и т.д.). К этому же классу относятся и объекты, создаваемые как авторские произведения в области литературы, искусства. Важным компонентом этих ресурсов является информация, получаемая в результате интеллектуальной деятельности человека. Выделяется вторичная информация, возникающая на основе переработки уже имеющейся информации, и новая, фиксирующая то, что человечество до сих пор не знало. Сюда относятся открытия, прогнозы в области различных социальных и природных процессов.
1.2 Виды информационных ресурсов
информационный ресурс контент браузер
В настоящее время существуют следующие виды информационных ресурсов:
1. Средства массовой информации. К ним относятся различного рода новостные и семантические сайты (или электронные версии СМИ). Их отличительной чертой является высокий уровень посещаемости (например, сайт НТВ, "Вести" и т.п.), быстрая смена информации, наличие видеоряда на сайте;
2. Электронные библиотеки. Электронная библиотека - распределенная информационная система, позволяющая надежно сохранять и эффективно использовать разнородные коллекции электронных документов через глобальные сети передачи данных в удобном для конечного пользователя виде;
3. Электронные базы данных. В самом общем смысле база данных - это набор надписей и файлов, специальным образом организованных. Один из типов баз данных - это документы, набранные при помощи текстовых редакторов и сгруппированные по темам. Другой тип - это файлы с электронными таблицами, которые объединены в группы по характеру их использования;
4. Сайты. Корпоративный сайт - это Интернет-ресурс, посвященный какой-то организации, фирме, предприятию. Как правило, он знакомит пользователей с фирмой, направлениями и видами ее деятельности, отражает различные справочные материалы: прайс-листы, условия поставок и оплаты, рекламную информацию, наличие сертификатов качества, участие в выставках, публикации в прессе т.п.
Можно говорить также о делении информационных ресурсов по другим признакам.
По целевому предназначению:
1. Личные;
2. Корпоративные;
3. СМИ;
4. Бизнес;
5. образовательные;
6. Политика;
7. Учреждения и организации;
8. Сервисы и услуги;
9. Доски объявлений;
10. Культура;
11. Чаты;
12. Хранилища ПО;
13. Спорт;
14. Отдых;
15. Изображения и фото;
16. Развлекательные порталы.
По способу представления:
1. Web-страницы;
2. Базы данных;
3. Файловые серверы;
4. Телеконференции.
По виду носителя:
1. Твердая копия (книга, газета, рукопись и т.д.);
2. На машиночитаемых носителях (кинопленка, фотопленка, аудиозаписи, видеозапись, данные на винчестере компьютера, CD, флэш и т.д.);
3. На канале связи (TV, радио).
По способу организации хранения и использования:
1. Документы на традиционных носителях (книги, газеты, журналы);
2. Массив документов;
3. Фонд документов;
4. Архив;
5. Автоматизированные формы.
По форме собственности:
1. Общероссийское национальное достояние;
2. Государственная собственность;
3. Собственность субъектов РФ (в том числе муниципальная);
4. Частная (личная, корпоративная) собственность.
По содержанию:
1. Тематическая информация;
2. Научные публикации;
3. Рекламная информация;
4. Справочная информация;
5. Новости;
6. Вторичная (библиографическая) информация.
Информационные ресурсы делятся по языковому признаку и географической территории:
1. По языковому признаку. Основным языком в сети Интернет является английский, но практически все основные языки мира представлены в Сети. Некоторые из сайтов поддерживают несколько языков - на выбор пользователя;
2. По географическому признаку. Информационный ресурс в большинстве случаев принадлежит какой-либо организации, расположенной и осуществляющей свою деятельность на определенной территории, подчиняющейся ее законам. Информация в некоторых случаях может быть предназначена для аудитории, находящейся преимущественно в пределах региона.
Таковы, например, сайты объявлений. Вряд ли информация о купле-продаже в Костроме интересна жителю Вологды. Доступ к этим ресурсам возможен из любой точки, независимо от места нахождения пользователя.[4]
1.3 Информационные системы
Любая информационная система представляет собой программный комплекс, функции которого состоят в поддержке надежного хранения информации в памяти компьютера, выполнении специфических для данного приложения преобразований информации, предоставлении пользователям удобного и легко осваиваемого интерфейса.
С развитием и распространением сети Интернет информационные системы стали более интерактивными, масштабируемыми и доступными обычным пользователям.
C развитием веб-технологий любой человек, имеющий компьютер, может развернуть информационную систему, даже у себя дома. Для этого необходимо познакомиться с программным обеспечением, без которого не обойтись.
Для того чтобы в Интернете появился сайт, он должен быть размещен на сервере хостера или вашем собственном, подключенном к сети и имеющем выделенный IP-адрес. Сервер представляет собой компьютер, на котором установлено специальное программное обеспечение, которое тоже называют "веб-сервером".
Сервер Apache удовлетворяет практически всем потребностям современных веб-разработок, но в то же время он достаточно прост. Это полнофункциональный, расширяемый веб-сервер, полностью поддерживающий протокол HTTP/1.1 и распространяющийся с открытым исходным кодом. Сервер может работать практически на всех распространенных платформах. Apache настраивается с помощью текстовых конфигурационных файлов. Основные параметры настроены "по умолчанию" и будут работать в большинстве случаев.
Самая простая функция, которую может выполнять Apache - стоять на сервере и обслуживать обычный HTML-сайт. Т.е. набираете адрес, и открывается страница. Также стандартной функцией является аутентификация пользователей, которая заложена в протоколе HTTP/1.1. Можно разграничить доступ к определенным страницам сайта для разных пользователей. Это нужно, например, для того чтобы сделать администраторский интерфейс к сайту. Пользователи могут быть разбиты на группы, и для каждой из них можно назначить свои права доступа.
Также для упрощения изменения статических объектов существует технология SSI (Server Side Includes). Она, например, позволяет вам поместить всю повторяющуюся информацию в один файл (например, top.inc), а затем вставлять в страницы ссылку на нее. Затем, если понадобится изменить несколько строк в этом тексте, то придется поменять их только в одном файле. Технология SSI, разработанная компанией Questar Microsystems. Она позволяет реализовать в обыкновенном HTML-документе такие интерактивные возможности как формирование различных запросов и обращение к базам данных, отправка электронной почты со страниц веб-сайта.
Сервер Apache был одним из первых серверов, которые начали поддерживать виртуальные сервера (хосты). Эта возможность позволяет размещать на одном физическом сервере несколько полноценных сайтов. У каждого из них может быть свой домен, администратор, IP-адрес и так далее.[5]
Программное обеспечение MySQL представляет собой многопоточный, многопользовательский SQL-сервер реляционных баз данных (SQL - язык структурированных запросов). Сервер MySQL предназначен как для критических по задачам производственных систем с большой нагрузкой, так и для встраивания в программное обеспечение массового распространения. Программное обеспечение MySQL имеет двойное лицензирование. Это означает, что пользователи могут выбирать, использовать ли MySQL бесплатно по общедоступной лицензии GNU General Public License (GPL) или приобрести одну из стандартных коммерческих лицензий MySQL AB.[6]
Также необходима поддержка языка PHP. Его лучше всего охарактеризовать как работающий на стороне сервера встроенный язык Web сценариев, позволяющий разработчикам быстро и эффективно строить динамические web-приложения. С позиций грамматики и синтаксиса PHP напоминает язык программирования С, хотя разработчики включили в него средства и из других языков, в том числе из Perl, Java и C++. Среди ценных заимствованных возможностей - поддержка регулярных выражений, мощные средства работы с массивами, объектно-ориентированная методология и обширная поддержка работы с базами данных. Одним из главных достоинств PHP является тот факт, что он внедряется прямо в HTML-код, поэтому программисту не приходится писать программу с множеством команд для простого вывода HTML. Плюс ко всему выше сказанному - PHP распространяется совершенно бесплатно.[7]
Выше перечисленные компоненты не обязательно устанавливать и конфигурировать вручную по-отдельности. Инсталляцию и конфигурирование компонентов можно произвести автоматически, а можно воспользоваться готовой сборкой программных продуктов Денвер. Давайте посмотрим, что же включает в себя базовый (основной) пакет Денвера:
1. Инсталлятор (поддерживается также инсталляция на flash-накопитель);
2. Apache, SSI, mod_php;
3. PHP5 с поддержкой MySQL;
4. MySQL5 с поддержкой транзакций;
5. Система управления виртуальными хостами;
6. Система управления запуском и завершением всех компонентов Денвера;
7. PHPMyAdmin -- система управления MySQL через Web-интерфейс.[8]
1.4 Обзор систем управления контентом
Ну вот теперь, на выше перечисленной платформе можно уже верстать сайт. Но делать это вручную не самое приятное. Более того, каждую страницу сайта верстать отдельно и с нуля - очень долго. Для автоматизации этого процесса можно использовать систему управления контентом (CMS). CMS -- информационная система, используемая для обеспечения и организации совместного процесса создания, редактирования и управления контентом. Главной целью такой системы является возможность собирать в единое целое и объединять на основе ролей и задач все разнотипные источники знаний и информации, доступные как внутри организации, так и за ее пределами, а также возможность обеспечения взаимодействия сотрудников, рабочих групп и проектов с созданными ими базами знаний, информацией и данными так, чтобы их легко можно было найти, извлечь и повторно использовать привычным для пользователя образом.
Далее, рассмотрим самые популярные CMS.
Drupal не самая популярная CMS, но в этом есть и свой плюс - она ограждена от пристального внимания хакеров и в ней было найдено не столь много уязвимостей, чем в более популярных CMS (например, Joomla). Также большим достоинством данной CMS является широкий функционал и возможность устанавливать дополнительные модули. Дополнительные модули для Drupal можно создать и самому. Рассмотрим стандартную сборку:
1. Реализован механизм аутентификации посетителей на сайте. Если это не нужно, то можно отключить этот модуль;
2. Можно с легкостью публиковать свои материалы, а другие пользователи могут их комментировать;
3. Реализована поддержка RSS-лент и даже создана основная лента, содержащая все материалы, публикуемые на главной странице. Также можно публиковать материалы с других сайтов, указав адрес RSS лент нужных сайтов;
4. Также имеется форум. Его можно настроить: разрешить или запретить создавать посетителям разделы форума, определить категории пользователей, которым можно удалять комментарии и т. д.;
5. На сайт можно добавить систему блогов. После этого зарегистрированные пользователи смогут вести свои блоги. Для публикации материалов Drupal поддерживает сторонние клиенты, например Microsoft Word;
6. В Drupal реализована внутренняя система обмена сообщениями, для зарегистрированных пользователей;
7. В Drupal легко сделать систему опросов для посетителей сайта;
8. Имеется модуль поиска по содержимому сайта. Полностью поддерживаются метки (теги);
9. Возможность загрузки изображений и файлов также реализована;
10. Поддерживается механизм Кэширования для более быстрой работы сайта;
11. Drupal является свободным программным обеспечением, распространяемым под лицензией GNU GPL.[1]
Также, одной из самым популярных CMS является Joomla. Такая популярность вызвана тем, что Joomla имеет множество дополнительных модулей и является очень универсальной. С ее помощью можно создать корпоративный сайты, школьные и университетские сайты, сайты электронной коммерции, сайты малого бизнеса, корпоративные сайты во внутренних и внешних сетях, порталы сообществ, сайты журналов и газет и многие другие. Но вследствие такой популярности, Joomla находится под пристальный надзором хакеров, который находят множество лазеек для взлома сайтов написанных на этой системе. Перечислим некоторые возможности, которые включены в базовую установку:
1. Простота создания/редактирования содержимого с использованием текстового редактора;
2. Регистрация пользователей и ограничение доступа к страницам в соответствии с правами пользователя;
3. Контроль за редактированием и публикацией содержимого пользователя в соответствии с уровнем его административных прав;
4. Голосования;
5. Простые контактные формы;
6. Общедоступные статистики сайта;
7. Закрытые подробные статистики сайта;
8. Встроенный механизм поиска по сайту;
9. Возможности распечатать или отправить любую статью в формате PDF другу по электронной почте;
10. Создание каналов RSS;
11. Простая система определения рейтинга содержимого;
12. Отображение полос новостей других сайтов;
13. Joomla является свободным программным обеспечением, распространяемым под лицензией GNU GPL. [2]
Описание MODx:
1. Мощная поддержка стандартов - MODx не заставляет вас создавать неказистые блочные или знаменитые трехколоночные «портальные» шаблоны. Вы можете верстать strict xhtml (Extensible Hypertext Markup Language -- Расширяемый язык разметки гипертекста);
2. Технологии Web 2,0 - MODx - первая бесплатная CMS с набором API-функций, полностью соответствующих тенденциям Web 2,0 Ajax;
3. PHP-среда разработки - гибкий API и модель обработки событий позволяют эффективно управлять работой ядра системы. Это дает возможность построить сайт, максимально соответствующий вашим требованиям;
4. Работает во всех основных браузерах - Safari 1,3+, Internet Exploer 5,5+, Firefox 1,0+;
5. Html-редакторы - все html редакторы в MODx устанавливаются как плагины, на любой цвет и вкус. FCKeditor идет в установочном пакете как редактор по умолчанию;
6. Система управления псевдонимами - псевдонимы автоматически добавляются в URL страниц, делая URL дружественным для поисковой системы и для человека, причем введенное значение псевдонима проверяется на ошибки;
7. CSS-генератор меню - позволяет создавать меню-списки с помощью тегов <ul> и затем придать им внешний вид с помощью CSS.
CSS (Cascading Style Sheets -- каскадные таблицы стилей) -- технология описания внешнего вида документа, написанного языком разметки.
Преимущественно используется как средство оформления веб-страниц в формате HTML и XHTML. CSS используется создателями веб-страниц для задания цветов, шрифтов, расположения и других аспектов представления документа. Основной целью разработки CSS являлось разделение содержимого (написанного на HTML или другом языке разметки) и представления документа (написанного на CSS). Это разделение может увеличить доступность документа, предоставить большую гибкость и возможность управления его представлением, а также уменьшить сложность и повторяемость в структурном содержимом. Кроме того, CSS позволяет представлять один и тот же документ в различных стилях или методах вывода, таких как экранное представление, печать, чтение голосом (специальным голосовым браузером или программой чтения с экрана).
CSS при отображении страницы может быть взята из различных источников.
Авторские стили (информация стилей, предоставляемая автором страницы) в виде:
1. Inline-стилей, когда в HTML-документе информация стиля для одного элемента указывается в его атрибуте style;
2. Встроенных стилей -- блоков CSS внутри самого HTML-документа;
3. Внешних таблиц стилей, то есть отдельного файла .css, на который делается ссылка в документе. Пользовательские стили - локальный CSS-файл, указанный пользователем в настройках браузера, переопределяющий авторские стили, и применяемый ко всем документам. Стиль браузера - стандартный стиль, используемый браузером по умолчанию для представления элементов;
4. Уровни вложенности документов -- количество вложенностей не ограничено;
5. Дополнительные параметры -- любой документ может иметь сколько угодно дополнительных параметров, помимо текстового содержимого, заголовка и т. д. Например, если вы создаете каталог литературы, вы можете добавить параметры и в дальнейшем сортировать документы по этим параметрам;
6. MODx является свободным программным обеспечением, распространяемым под лицензией GNU GPL. [3]
1.5 Служба каталогов Active Directory
Любые порталы учебно-методической литературы обычно привязаны к какой-либо организации. Как правило, организации средних и крупных масштабов нуждаются в Active Directory.
Служба каталогов Active Directory может быть установлена на серверах, работающих под управлением операционных систем Microsoft Windows Server 2003, Standard Edition, Windows Server 2003, Enterprise Edition и Windows Server 2003, Datacenter Edition. Она хранит сведения об объектах сети и упрощает поиск и использование этих сведений пользователям и администраторами. В Active Directory основой для логической, иерархической организации сведений каталога служит структурированное хранилище данных. Это хранилище данных, называемое также каталогом, содержит сведения об объектах Active Directory. В число этих объектов обычно входят общие ресурсы, такие как серверы, тома, принтеры, а также учетные записи сетевых пользователей и компьютеров.
Группа безопасности интегрирована с Active Directory посредством проверки подлинности при входе в сеть и управления доступом к объектам в каталоге. В рамках одного входа в сеть администраторы могут управлять данными каталога и организацией через их сеть, а прошедшие проверку сетевые пользователи могут иметь доступ к ресурсам во всей сети. Администрирование, основанное на политике, облегчает управление даже самой сложной сетью.
В состав службы Active Directory входят также следующие элементы:
1. Набор правил -- схема, определяющая классы объектов и атрибуты, содержащиеся в каталоге, а также пределы и ограничения на экземпляры этих объектов и формат их имен;
2. Глобальный каталог, содержащий сведения о каждом объекте в каталоге. Это позволяет пользователям и администраторам находить сведения каталога независимо от того, в каком из доменов каталог в действительности содержатся эти данные;
3. Механизм запросов и индексации, позволяющий опубликовывать и находить объекты и их свойства сетевым пользователям или приложениям;
4. Служба репликации, распространяющая данные каталога по сети. Все контроллеры домена в домене участвуют в репликации и содержат полную копию всех сведений каталога для своего домена. Любое изменение данных каталога реплицируется во все контроллеры домена;
5. Поддержка клиентского программного обеспечения службы Active Directory.
1.6 Поиск информации
Естественно, поиск нужной информации в таких объемах ресурсов очень трудоемок. В таких случаях можно использовать готовые поисковые машины, такие как Google или Yandex. Конечно же, с поиском информации они справятся на отлично, но не хотелось бы зависеть от интернет соединения для решения столь часто используемой функции.
1.7 Вывод
В результате обзора технологий с учетом требований к задаче можно сделать следующие выводы. Подходит CMS Drupal, т.к. она удовлетворяет ниже перечисленным требованиям:
1. Программное обеспечение свободное, распространяется под лицензией GNU GPL;
2. Легко расширяемая система;
3. Имеет хорошую техническую поддержку;
4. Хороший уровень безопасности.
ГЛАВА 2. Проектирование
2.1 Постановка задачи
Реализовать программный продукт управления контентом портала учебно-методической литературы на базе локальной вычислительной сети университета. Продукт должен удовлетворять ниже перечисленным требованиям:
1. Дружественный интерфейс, который будет ясен как первокурснику, так и опытному преподавателю;
2. Обязательно должны быть разграничены права пользователей;
3. Проект должен быть масштабируемым.
2.2 Системный анализ
В общем и целом система должна:
1. Иметь графический интерфейс для взаимодействия с пользователем;
2. Сохранять и считывать информацию с базы данных;
3. Организовывать поиск нужной информации из базы данных;
4. Разграничивать права пользователей, находящихся в портале;
5. Безопасно хранить пароли пользователей, т.е. в хешированном виде;
6. Информировать пользователя о последних изменениях на сайте;
7. Легко интегрироваться в корпоративную сеть со своей Active Directory, а также имеет внутреннюю аутентификацию;
8. Позволять оставлять комментарии к материалам пользователей и просто обмениваться сообщениями зарегистрированным пользователям.
Анализируя изложенные требования к системе, не сложно разбить ее на подсистемы, которые обеспечивают заданный функционал.
Перечислим их:
1. Модуль графического интерфейса (GUI);
2. Модуль авторизации;
3. Модуль хеширования паролей;
4. Модуль управления базой данных;
5. Модуль поиска;
6. Модуль аутентификации;
7. Модуль комментариев;
8. Модуль новостей;
9. Модуль аутентификации в LDAP.
Естественно данные модули связаны друг с другом, а некоторые зависят друг от друга. Все взаимосвязи модулей представлены на рисунке 2.1.
Рис. 2.1 Модульная структура портала.
Рассмотрим подробнее каждый модуль.
2.2.1 Модуль GUI
Модуль GUI необходим для того, чтобы пользователь мог за несколько кликов мышью воспользоваться любой функцией портала. Также это делает доступным все возможности для обычных пользователей, которые ничего не знают о веб-технологиях. Графический интерфейс предоставляет доступ к другим модулям системы, к некоторым явно, а к некоторым прозрачно, не заметно для пользователя. Основные объекты данной подсистемы - это небольшие поля для ввода текста, кнопки и навигационное меню. К каждой кнопке (ссылке) привязано определенное действие, которое запускает необходимый модуль. Например, когда пользователь открывает портал, он видит два текстовых поля и одну кнопку. Схематичное изображение этой страницы показано на рисунке 2.2. Чтобы попасть в систему ему необходимо пройти процедуру аутентификации. Для этого нужно заполнить оба текстовых поля. В первом поле вводится логин пользователя, а втором - пароль. Потом нужно нажать на кнопку войти. Если пользователь аутентифицирован, он попадает на главную страницу, иначе выдается сообщение об ошибке. Таким образом, задействуется модуль аутентификации. Схематичное изображение главной страницы портала показано на рисунке 2.3.
Рис. 2.2 Аутентификация в портале.
Рис. 2.3 Главная страница портала.
2.2.2 Модуль аутентификации
Без аутентификации пользователь не сможет попасть в систему. Модуль принимает на вход два параметра: логин пользователя и пароль. Т.к. пароль не безопасно хранить в текстовом виде в базе данных, обычно хранится его хэш. Поэтому сначала пароль отправляется в модуль хеширования паролей. Этот модуль, естественно, возвращает его хэш. Потом идет проверка, есть ли такой пользователь в базе данных. Если да, то проверяется полученных хэш с тем, что находится в базе данных. В случае совпадения, пользователь переводится на главную страницу портала, иначе выводится сообщение об ошибке и дается возможность попробовать аутентифицироваться еще раз.
2.2.3 Модуль хеширования паролей
Это небольшой, но очень важный модуль с точки зрения безопасности. Принцип работы очень прост. Приходит строка символов (пароль). К этой строке применяется алгоритм шифрования Message Digest 5 (MD5). На выход модуля отправляется получившийся хэш.
2.2.4 Модуль аутентификации в LDAP
Если система внедряется в готовую локальную сеть, в которой уже имеется Active Directory. Можно облегчить себе работу и не создавать с нуля всех пользователей. Также пользователем будет очень удобно использовать один и тот же логин и пароль для входа и на компьютер и в портал. Таким образом, модуль принимает на вход два параметра: логин пользователя и пароль. После проверки введенных данных пользователь либо попадает на главную страницу сайта, либо ему будет выведено сообщение об ошибке.
2.2.5 Модуль авторизации
Этот модуль будет задействован чаще других. Перед тем как вывести на экран какую-либо страницу пользователю (или даже небольшую ее часть), проверяется, достаточно ли у него прав для просмотра. Аналогичное действие выполняется, если редактируется, создается или скачивается файл.
2.2.6 Модуль управления базой данных
Главная функция модуля в том чтобы осуществлять все операции с базой данных. Он состоит из набора скриптов, которые позволяют наполнять, изменять и получать информацию из базы данных. То есть для выполнения нужного действия необходимо запустить соответствующий скрипт. Таким образом, если вдруг придется подключить другую базу данных, то в системе не потребуются структурные изменения. Достаточно будет в данном модуле изменить необходимые скрипты.
2.2.7 Модуль поиска
Модуль поиска принимает на вход текстовую строку. Согласно заданному шаблону, осуществляется поиск по сайту. В результате, на экран пользователя выводятся список ссылок на материалы, в тексте которых были найдены точные совпадения со строкой поиска. Если обычный поиск не возвращает нужного результата, то можно воспользоваться расширенным поиском. В расширенном поиске появляются еще три текстовых поля. В первое текстовое поле вводятся слова, любое из которых по отдельности может встретиться в искомом документе. Во второе поле вводится точная фраза, которая встречается в документе. А в третьем поле вводятся слова, которые не встречаются в документе. Дополнительные параметры поиска значительно увеличивают шанс найти необходимый материал.
2.2.8 Модуль комментариев
В портале к любому выложенному материалу можно оставить комментарий. Такая возможность, естественно, есть только у зарегистрированных пользователей. Для того чтобы оставить комментарий, необходимо нажать на соответствующую ссылку в конце страницы. Потом нужно заполнить три обязательных поля. Первое поле - это автор. Оно заполняется автоматически логином, под которым пользователь вошел в систему. Второе поле - это тема. Третье поле - это непосредственно сам комментарий. В тексте можно использовать HTML теги. Например, тег <a> для оформления ссылки на другие страницы сайта или на другие сайты. После заполнения всех полей нужно обязательно нажать на кнопку сохранить. Теперь комментарий размещен и доступен для чтения другими пользователями. Чтобы убедиться, что он написан корректно и будет отображаться, так как вам хочется можно воспользоваться функцией предварительного просмотра. Такая функция очень удобна, если вы используете HTML теги.
2.2.9 Модуль новостей
Каждый пользователь может отслеживать, какие материалы были изменены, сколько оставили комментариев, когда было последнее обновление. Можно следить только за своими публикациями или за всеми имеющимися в портале. Для того чтобы просмотреть последние обновления нужно перейти по ссылке «Последние публикации» в главном меню.
2.3 Клиент-серверный анализ
В основе широкого распространения локальных сетей компьютеров лежит известная идея разделения ресурсов. Высокая пропускная способность локальных сетей обеспечивает эффективный доступ из одного узла локальной сети к ресурсам, находящимся в других узлах. Развитие этой идеи приводит к функциональному выделению компонентов сети: разумно иметь не только доступ к ресурсам удаленного компьютера, но также получать некоторый сервис, который специфичен для ресурсов данного рода. Так мы приходим к различению клиентов и серверов.
Рабочая станция предназначена для непосредственной работы пользователя и обладает ресурсами, соответствующими локальным потребностям данного пользователя.
Сервер локальной сети должен обладать ресурсами, соответствующими его функциональному назначению и потребностям сети. Заметим, что в связи с ориентацией на подход открытых систем, правильнее говорить о логических серверах (имея в виду набор ресурсов и программных средств, обеспечивающих услуги над этими ресурсами), которые располагаются не обязательно на разных компьютерах.
Для разработки веб-приложений используется клиент серверная модель. В качестве сервера выступает сервер Apache, а клиент - веб-браузер. Клиент посылает запрос серверу, который обрабатывается и в ответ приходит html- страница, отображаемая браузером на экране. Структура клиент серверной модели представлена на рисунке 2.4.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Рис. 2.4 Клиент серверная модель.
Клиент и сервер связываются по стеку протоколов TCP\IP.
HTTP -- протокол прикладного уровня передачи данных
Основой HTTP является технология «клиент-сервер», то есть потребитель (клиент) инициирует соединение и посылает запрос, а поставщик (сервер) ожидает соединения для получения запроса, производит необходимые действия и возвращает обратно сообщение с результатом. HTTP в настоящее время повсеместно используется во Всемирной паутине для получения информации с веб-сайтов.
2.4 Вывод
В результате проектирования система была разбита на подсистемы, определены взаимосвязи между всеми модулями, описан функционал каждого модуля.
В качестве базовой архитектуры приложения была выбрана клиент серверная архитектура.
Глава 3. Реализация
3.1 Выбор инструментария
Для создания несложного сайта, достаточно использовать язык гипертекстовой разметки HTML. Hyper Text Markup Language - язык разметки гипертекстов, предназначенный для создания форматированного текста, насыщенного изображениями, звуком, анимацией, видеоклипами и гипертекстовыми ссылками на другие документы. Если задуманный проект динамичен, постоянно обновляем, легок в управлении его содержимым, то, очевидно, одного HTML здесь не достаточно. Для создания такого сайта необходимо использование дополнительных технологий и языков программирования.
Серверные языки сценариев позволяют в полном объеме использовать базы данных, авторизовать пользователей, работать с сессиями и т.п. Рассмотрим некоторые из них.
В одну группу можно объединить такие языки как PHP, Perl, Ruby и Pithon. По функционалу у них почти нет различий. А вот скорость работы можно оценить по результатам теста, изображенного на рисунке 3.1. Результаты теста взяты с сайта http://habrahabr.ru/blogs/ruby/48952/.
Рис. 3.1 Результаты теста.
По результатам видно, что Ruby 1.9.0 быстрее всех, но это экспериментальная версия. На втором месте PHP, который всегда отличался высокой скоростью работы. Также большим преимуществом является то, что PHP поддерживают большинство веб-серверов;
ASP можно выделить отдельно, т.к. он ориентирован на сервера с платформой windows и с базой данных MS SQL. ASP также уступает PHP в скорости;
С/С++ быстрее чем все выше перечисленные языки, но требуют гораздо больше времени на разработку. Выбор такого инструментария оправдывается только для очень крупных проектов с высокой посещаемостью пользователями.
Из вышеперечисленных инструментариев был выбран PHP, т.к. он поддерживается большинством веб-серверов, php-сценарий выполняется гораздо быстрее, чем на других языках программирования, а также PHP имеет хороший набор библиотек для решения стандартных задач веб-программирования.
Впервые каскадные таблицы стилей CSS были реализованы в браузере Internet Explorer 3.0. Они позиционируются разработчиками в качестве некой единой системы представления стилей в электронном документе, основанной на использовании специальных модулей.
Для придания интерактивности веб-страницам необходим язык JavaScript. JavaScript -- объектно-ориентированный скриптовый язык программирования, который встраивается в HTML код веб-страницы.
Для функционирования портала сервер должен быть оборудован специальным программным обеспечением, таким как Denwer и Drupal.
Denwer 3 - это набор программных продуктов в который включено:
1. Веб-сервер Apache 2.2.4;
2. Поддержка языка PHP 5.3;
3. База данных MySQL 5.1;
4. PHP my Admin - графический интерфейс управления базой данных.
Drupal - это система управления контентом портала. Данный выбор был аргументирован ранее.
3.2 Структура CMS Drupal
Соотносим структуру, полученную в результате системного анализа во второй главе, и выбранный инструментарий. Полученная система изображена на рисунке 3.2. Все взаимосвязи модулей описаны ранее.
Рис. 3.2 Структура портала.
Браузер предоставляет графический интерфейс для доступа к порталу. Он осуществляет графическое отображение информации полученной им от веб-сервера в виде HTML. Для корректного отображения информации подойдет любой из популярных браузеров, таких как Firefox, Opera, IE, Safari и др.
Веб-сервер Apache обеспечивает внутреннюю аутентификацию пользователей. Настройка конфигураций производится файлом .htaccess. Файл находится в корневом каталоге сайта. В него записываются необходимые директивы, которые веб-сервер воспринимает и обрабатывает, выполняя действия в соответствии с настройками пользователя.
PHP my Admin - это веб-интерфейс для управления базой данных MySQL. С его помощью можно:
1. Создать, удалить и изменить базу данных;
2. Создать, удалить и изменить таблицу или отдельные ее поля;
3. Можно разграничить права доступа пользователей к базам данных.
Теперь рассмотрим систему управления контентом Drupal. Для обеспечения необходимого нам функционала нужны модули: Search, Ldapauth, User, Comment, Tracker. Модуль Search отвечает за поиск информации в портале, а также имеет возможность расширенного поиска. Модуль Ldapauth позволяет пользователям аутентифицироваться в портале с помощью своей учетной записи в Active Directory. Модуль User управляет регистрацией и авторизацией на сайте, а также может хешировать и хранить пароли пользователей. Модуль Comment дает возможность пользователям комментировать и обсуждать опубликованные материалы. Модуль Tracker позволяет следить за изменениями на сайте. Ядро Drupal позволяет управлять базой данных, к которой ее прикрепили при установке.
3.3 Аутентификация пользователя в Active Directory
Аутентификация пользователей в портале по учетным записям в Active Directory - это очень удобно, т.к. не приходится регистрировать и назначать права доступа всем пользователям вручную. Также этот процесс облегчает внедрение проекта в организации.
3.3.1 Настройка модуля
Для подключения к Active Directory нам необходимо знать:
1. IP-адрес сервера;
2. Порт, по которому будем подключаться к серверу;
3. Базовый DN;
4. Атрибут User Name;
5. Атрибут Email.
На рисунке 3.3 изображена форма, которую необходимо заполнить для успешной работы модуля.
Рис. 3.3 Настройка модуля Ldapauth.
Базовый DN - это путь в Active Directory, с которого мы начинаем искать пользователя для аутентификации.
User Name - это атрибут в учетной записи Active Directory, по которому мы идентифицируем пользователя. Важно чтобы этот атрибут был уникальным. В данной ситуации был выбран “userPrincipalName”, который имеет вид, например для студента, “фамилия.номер_группы@stud.asu.ru”. Окончание такого логина показывает нам, что это студент. Эта информация используется в дальнейшем для разграничения прав пользователя.
Email - атрибут Active Directory, который содержит адрес электронной почты пользователя. Он может использоваться в дальнейшем для обратной связи с пользователем. Таким примером может быть процесс восстановления пароля. Пользователю высылается новый пароль на электронную почту. Также рассылку оповещений, таких как: информация о создании или удалении учетной записи, оповещения о новых комментариях в публикациях и т.д.
Также нужно указать учетную запись пользователя, под которым будет осуществляться подключение к Active Directory. Этот пользователь должен как минимум иметь право на чтение. Данная процедура обязательна не во всех случаях, т.к. некоторые службы каталогов не запрещают анонимный поиск.
3.3.2 Реализация
В языке PHP реализованы функции для работы со службами каталогов Ldap.
Для подключения к Active Directory используется функция ldap_connect(Параметр_1,параметр_2). Где Параметр_1 - это IP-адрес сервера. Параметр_2 - это порт, по которому мы подключаемся к серверу. Если не указывать порт, то по умолчанию будет использован порт 389. Данная функция возвращает положительный идентификатор Ldap-ссылки, если подключение к серверу прошло успешно, иначе - false.
Для входа в Active Directory при помощи введенного логина и пароля используется функция ldap_bind(Параметр_1, параметр_2, параметр_3). Она возвращает значение true при успешном подключении, иначе - false. Параметр_1 - это положительный идентификатор Ldap-ссылки, который возвращает функция ldap_connect(). Таким образом, этот параметр указывает текущую Active Directory, в которую мы пытаемся войти. Параметр_2 - это логин пользователя. Параметр_3 - это пароль пользователя. Если не указывать второй и третий параметры, то вход будет осуществляться под анонимным пользователем.
Для поиска нужного пользователя в Active Directory нужна функция ldap_search(Параметр_1, параметр_2, параметр_3, параметр_4). Эта функция возвращает идентификатор результата поиска при успехе, иначе - false. Параметр_1 - это положительный идентификатор Ldap-ссылки. Параметр_2 - это базовый DN, каталог с которого начинается поиск в дереве. Параметр_3 - это фильтр, по которому мы ищем пользователя. Параметр_4 необязательный. Его можно добавлять для ограничения атрибутов и значений, возвращаемых сервером. По умолчанию возвращаются все атрибуты и их значения.
И в завершении, чтобы данная аутентификация работала на всем сайте, необходимо в начале каждого файла функцию session_start(). Вся информация, которая не должна отображаться для анонимных пользователей заключается в условный оператор такого типа:
if ( isset($_SESSION['user_id']) )
{ <Скрытый Контент> }
3.4 Сессии и cookies
Сессии и cookies предназначены для хранения сведений о пользователях при переходах между несколькими страницами. При использовании сессий данные сохраняются во временных файлах на сервере. Файлы с cookies хранятся на компьютере пользователя, и по запросу отсылаются браузером серверу.
Использование сессий и cookies очень удобно и оправдано в таких приложениях как Интернет-магазины, форумы, доски объявлений, когда, во-первых, необходимо сохранять информацию о пользователях на протяжении нескольких страниц, а, во-вторых, своевременно предоставлять пользователю новую информацию.
Протокол HTTP является протоколом "без сохранения состояния". Это означает, что данный протокол не имеет встроенного способа сохранения состояния между двумя транзакциями. Т. е., когда пользователь открывает сначала одну страницу сайта, а затем переходит на другую страницу этого же сайта, то основываясь только на средствах, предоставляемых протоколом HTTP невозможно установить, что оба запроса относятся к одному пользователю. Т. о. необходим метод, при помощи которого было бы отслеживать информацию о пользователе в течение одного сеанса связи с Web-сайтов. Одним из таких методов является управление сеансами при помощи предназначенных для этого функций. Для нас важно то, что сеанс по сути, представляет собой группу переменных, которые, в отличие от обычных переменных, сохраняются и после завершения выполнения PHP-сценария.
3.4.1 Сессии
При работе с сессиями различают следующие этапы:
1. Открытие сессии;
2. Регистрация переменных сессии и их использование;
3. Закрытие сессии.
Самый простой способ открытия сессии заключается в использовании функции session_start(), которая вызывается в начале PHP-сценария.
Эта функция проверяет, существует ли идентификатор сессии, и, если нет, то создает его. Если идентификатор текущей сессии уже существует, то загружаются зарегистрированные переменные сессии.
Регистрация переменных сессии осуществляется при помощи функции session_register().
Т.е. для того, чтобы зарегистрировать переменную, в которой хранится имя пользователя, указанное им при регистрации, мы должны вызвать эту функцию следующим образом:
session_register("username");
3.4.2 Cookies
Использование сookies удобно как для программистов, так и для пользователей. Пользователи выигрывают за счет того, что им не приходится каждый раз заново вводить информацию о себе, а программистам сookies помогают легко и надежно сохранять информацию о пользователях.
Cookies - это текстовые строки, хранящиеся на стороне клиента, и содержащие пары "имя-значение", с которыми связан URL, по которому браузер определяет, нужно ли посылать cookies на сервер.
Установка cookies производится с помощью функции:
bool setcookie (string name [, string value [, int expire [, string path [, string domain [, int secure]]]]])
Эта функция имеет следующие аргументы:
name - имя устанавливаемого cookie;
value - значение, хранящееся в cookie с именем $name;
expire - время в секундах с начала эпохи, по истечение которого текущий cookie становится недействительным;
path - путь, по которому доступен cookie;
domain - домен, из которого доступен cookie;
secure - директива, определяющая, доступен ли cookie не по запросу HTTPS.
По умолчанию эта директива имеет значение 0, что означает возможность доступа к cookie по обычному запросу HTTP.
По умолчанию cookies устанавливаются на один сеанс работы с броузером, однако можно задать для них более продолжительный срок существования. Это очень удобное и полезное свойство, поскольку в этом случае пользователю не нужно предоставлять свои данные вновь при каждом посещении сайта.
Как уже говорилось, срок годности устанавливается в секундах относительно начала эпохи. В PHP существуют функции time и mktime для работы с датой и временем, позволяющие переводить текущее время в количество секунд с начала эпохи. Функция time просто переводит текущее системное время в количество секунд, прошедших с начала эпохи. Усовершенствованным вариантом функции time является функция mktime:
int mktime ([int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]])
Аргумент is_dst этой функции определяет, попадает ли эта дата в период летнего времени и может принимать значения (-1,0,1). -1 - (По умолчанию) Означает, что свойство не задано. 0 - Временной интервал не приходится на период летнего времени. 1 - Временной интервал приходится на период летнего времени.
Примеры установки сроки годности cookies:
<?
/* этот cookie действителен в течение 10 мин после создания */
setcookie("name", $value, time() + 600);
/* действие этого cookie прекращается в полночь 25 января 2010 года */
setcookie("name", $value, mktime(0,0,0,03,05,2011));
?>
Для того чтобы удалить cookie необходимо вызвать функцию setcookie и передать ей имя того cookie, который подлежит удалению.
setcookie("name");
Иногда в cookies приходится хранить конфиденциальные данные, и в этом случае разработчик должен позаботиться о том, чтобы информация, хранящееся в cookie, не была передана третьим лицам. Существует несколько методов защиты информации, хранящейся в cookie:
1. Установка области видимости cookies;
2. Шифрование;
3. Ограничение доступа для доменов;
4. Отправка cookies по защищенному запросу.
Наилучшим решением является комплексное применение всех этих способов.
Для дополнительной безопасности, список доменов, имеющих доступ к cookies, должен быть ограничен. Это можно сделать при помощи следующего кода:
setcookie("name", $value, "/web/index.php", ".server.com");
При таком ограничении заданной области видимости будут соответствовать домены с именами server.com, myserver.com, php.server.com и т. д., поскольку проверка на допустимость области видимости домена осуществляется по принципу концевого соответствия.
Не является излишним для cookie, хранящему секретные данные, разрешить отвечать только на защищенные запросы HTTP, так как в этом случае значительно затрудняется перехват данных, которыми обмениваются клиент и сервер. Для обеспечения защищенного соединения, функции setcookie передается шестой параметр со значением, равным 1.
setcookie("name", $value, time() + 600, "/web/", ".server.com", 1);
3.5 Запрос-ответ
Подобные документы
Понятие и основные функции систем управления web-контентом. Система управления web-контентом как программный комплекс, предоставляющий функции создания, редактирования, контроля и организации web-страниц. Обзор и анализ существующих систем WCMS.
курсовая работа [419,4 K], добавлен 29.12.2014Краткая характеристика функционала Solid Works Enterprise PDM. Методы и средства разработки системы управления контентом портала с архивом конструкторской документации. Логическая и компонентная архитектура. Решения по пользовательскому интерфейсу.
дипломная работа [2,1 M], добавлен 10.02.2017Построение модели корпоративного портала как платформы для разработки учебно-методической документации вуза. Состав, особенности использования учебно-методической документации вуза. Концептуальная модель корпоративного портала образовательного учреждения.
дипломная работа [3,0 M], добавлен 18.03.2012Виды информационных ресурсов. Обзор систем управления контентом. Модуль аутентификации, хеширования паролей, авторизации. Клиент серверная модель. Выбор инструментария для создания сайта, сессии и cookies. Массив элементов меню, установки доступа.
дипломная работа [1009,7 K], добавлен 14.10.2012Процесс создания и развития динамических веб-страниц с использованием систем управления контентом. Последовательность установки и настройки движка и плагинов CMS E-107 на хостинге. Разграничение ролей администратора и пользователей интернет-портала.
курсовая работа [2,3 M], добавлен 29.06.2014Создание базы данных для хранения информации о пользователях системы. Применение механизма аутентификации и управления сессиями. Описание программных мер, предпринятых для обеспечения безопасности информационных ресурсов образовательного веб-портала.
дипломная работа [2,2 M], добавлен 27.06.2012Разработка и практическое внедрение контента "Joomla!", порядок установки и настройки системы управления им. Выбор дизайна, цветовой гаммы и анимации сайта, методика его добавления. Создание информационной структуры в системе управления контентом.
дипломная работа [3,4 M], добавлен 22.06.2009Назначение, краткая характеристика и требования к системам проектирования и управления мультимедийными учебно-методическими курсами. Обзор компьютерных дистанционных технологий обучения. Возможности системы управления контентом. Мультимедиа компоненты.
учебное пособие [60,3 K], добавлен 30.04.2009Компьютерные обучающие системы. Основные принципы новых информационных технологий обучения. Развитие глобальной сети Интернет, понятие web-сайта. Процессор гипертекста, СУБД MySQL. Система управления контентом "Joomla". Установка локального сервера.
дипломная работа [4,4 M], добавлен 19.04.2011Организация совместного процесса создания, редактирования и управления контентом. Достоинства разработанной CMS. Добавление, редактирование и удаление страниц, файлов, новостей. Программный продукт для создания и легкого управления контентом страницы.
дипломная работа [2,1 M], добавлен 15.10.2013