Файл: Разработка WEB-ресурса по обмену книгами «BookTrade.org».pdf
Добавлен: 25.04.2023
Просмотров: 332
Скачиваний: 2
Введение
Цель данной работы – разработка веб-ресурса, направленного на реализацию обмена книг, BookTrade.org с возможностью последующей доработки и реализации как полноценного проекта для размещения в сети Интернет. Разрабатываемый ресурс направлен как на возможность обмена бумажными книгами между пользователями, так и на поиск нового литературного опыта. Таким образом, разделы сайта и их реализация должны отвечать обеим поставленным задачам в полной мере и предоставлять функционал для выполнения этих задач. Основными разделами ресурса выбраны “Home page” (домашняя страница), “What to read?” (что почитать), “Quotes” (цитаты), “Users’ reviews” (пользовательские рецензии), “Trade offers” (предложения обмена) и “Literature news” (новости литературы). Таким образом, все разделы сайта должны быть направлены на выполнение информационной, коммуникативной и развлекательной целей и имеют соответствующий функционал.
Оформление веб-ресурса выбрано в спокойных, холодных тонах, чтобы не смещать внимание пользователя с основной тематики, а также подчеркнуть саму специфику эмоциональной стороны увлечения литературой. Также оформление сайта приближено к функциональному минималистичному стилю и не изобилирует лишними элементами и нагромождениями блоков и информации. Все функции, которые можно выполнить с элементами сайта, строго разделены и имеют отдельные выделенные специально для их выполнения страницы, что сделано также для уменьшения количества контента на страницах сайта и соответственно снижению степени расфокусировки пользователя на предоставленной информации.
Также веб-ресурс выполнен полностью с использованием английского языка и нацелен, соответственно, на интернациональную аудиторию. Таким образом, разрабатываемый сайт призван помогать людям в получении литературы на различных языках и стирать языковые границы.
1. Техническое задание
Веб-ресурс BookTrade.org для реализации возможности обмена бумажными книгами между пользователями и в целом литературного портала имеет шесть основных разделов, выполняющих основные функции. Также имеются второстепенные разделы, реализованные в пользовательских интерфейсах, выполняющие такие функции как демонстрация индивидуальных предпочтений и пожеланий пользователей, а также реализацию коммуникативной части веб-ресурса, что выполнено в виде форм отправки-принятия сообщений.
В частности, основные разделы сайта имеют следующие функции:
- Home page – знакомство новых пользователей с веб-ресурсом, а также с последними нововведениями на портале.
- What to read? – раздел, предназначенный для того, чтобы пользователь мог получить случайную книгу из базы данных и, возможно, заинтересоваться как новым литературным опытом.
- Quotes – раздел со случайной цитатой из базы данных, направленный на то, чтобы заинтересовать пользователя в, возможно, новом для него произведении.
- Users’ reviews – обзоры пользователей на книги, где пользователь также может подобрать для себя нечто новое.
- Trade offers – предложения пользователей об обмене с краткой информацией о предложении, а также возможностью сразу написать личное сообщение автору объявления.
- Literature news – новости литературы, добавляемые администраторами и модераторами.
Активность, доступная пользователям зависит от того, к какой категории он относится и какие соответственно права имеет. Так пользователи делятся на четыре категории:
- Неавторизованные. Имеют право просматривать все доступные на панели навигации разделы сайта, а также просматривать профили зарегистрированных пользователей.
- Авторизованные, забаненные (имеющие нулевые права). Имеют право просматривать все доступные разделы сайта, просматривать профили зарегистрированных пользователей и редактировать свой персональную информацию и просматривать личные сообщения.
- Авторизованные, не забаненные. Имеют право просматривать все доступные разделы сайта, просматривать профили зарегистрированных пользователей, редактировать свой персональную информацию, просматривать и отправлять личные сообщения, добавлять книги в предложения об обмене, желаемое, прочитанное (формировать персональную библиотеку), добавлять обзоры на книги.
- Администраторы. Имеют право просматривать все доступные разделы сайта, просматривать профили зарегистрированных пользователей, редактировать свой персональную информацию, просматривать и отправлять личные сообщения, добавлять книги в предложения об обмене, желаемое, прочитанное (формировать персональную библиотеку), добавлять обзоры на книги, добавлять и редактировать книги в общей библиотеке ресурса, добавлять и редактировать цитаты, добавлять новости литературы и портала. Также административная функция проявляется в том, что администратор может удалить предложение об обмене пользователя, отредактировать добавленный пользователем обзор, а также лишить пользователя прав или восстановить права обычного пользователя.
При регистрации пользователь в обязательном порядке указывает логин, электронную почту и пароль; данная информация заносится в таблицу users, используемую для аутентификации пользователя; при регистрации пользователь автоматически получает обычные права, что также заносится в эту таблицу. При желании также указывает такие данные как полное имя, возраст, место жительства и информацию о себе; данная информация хранится в другой таблице – user_info, и используется уже непосредственно при работе с сайтом. При аутентификации пользователя в сессию заносятся логин и права из таблицы users, а также обновляется дата и время последней аутентификации и ставится отметка об онлайне в таблице user_info. При выходе из портала (log out) также обновляется отметка о последней активности и ставится отметка о том, что пользователь оффлайн. Весь контент, добавляемый пользователями, хранится в базе данных на сервере, сортируемый по специфике по разным таблицам. Используемая для менеджмента базы данных СУБД – MySQL. Для реализации всей статичной части сайта используется связка HTML+CSS, для реализации серверной – PHP. Используемый серверный движок – Apache.
2. Описание модулей серверной части программы и их взаимодействие
Для разработки веб-ресурса была выбрана среда разработки MS Visual Code с установленными плагинами на подсветку синтаксиса для HTML, CSS и PHP. Также перед разработкой была разработана модель, отражающая логистику, функциональную связь модулей разрабатываемого веб-ресурса. Она продемонстрирована на рисунке 1. Подробное описание модулей, их основных компонентов, назначения и входных-выходных данных предоставлено в таблице 1. Описание вспомогательных компонентов предоставлено в таблице 2.
Рисунок 1
Таблица 1
|
Модуль |
Компонент |
Назначение компонента |
Входные и выходные данные |
|
Аутентификация |
register.php |
Добавление нового пользователя в систему |
Входные данные: Users (Username, Email, Password), user_info (Full name, Age, Location, User information). |
|
Аутентификация, авторизация |
login.php |
Аутентификация и авторизация пользователя |
Входные данные: users (Username, Password). Выходные данные: user_info (Rights, Active, Last online). |
|
Общий модуль |
index.php |
Домашняя страница, ознакомление пользователя с ресурсом |
Входные данные: данные сессии (Username, Rights). Выходные данные: модуль новостей портала site_news (title, text, date), для неавторизованных пользователей справка о портале. |
|
Общий модуль |
goread.php |
Случайная книга |
Выходные данные: случайная книга из библиотеки books (bookname, author, genre). |
|
Общий модуль |
quote.php |
Случайная цитата |
Выходные данные: случайная цитата из цитатника quotes (bookname, quote_text) и справка по книге из библиотеки books (author, genre). |
|
Общий модуль |
reviews.php |
Пять случайных пользовательских обзоров |
Входные данные: данные сессии (Username, Rights). Выходные данные: пользовательские обзоры reviews (bookname, author, username, review, rating). |
|
Общий модуль, обзоры |
addreview.php |
Добавление обзора |
Входные данные: данные сессии (username, rights), добавление обзора reviews (bookname, author, username, review, rating). |
|
Общий модуль, обзоры |
editreview.php |
Редактирование обзора |
Входные данные: данные сессии (username, rights), редактирование обзора reviews (bookname, author, username, review, rating). Выходные данные: информация о старом обзоре reviews (bookname, author, review, rating). |
Продолжение таблицы 1
|
Общий модуль |
news.php |
Новости литературы |
Входные данные: данные сессии user_info (Username, Rights). Выходные данные: новости lit_news (title, small_text, date). |
|
Общий модуль, новости |
litnews.php |
Развернутая новость из раздела с новостями литературы |
Входные данные: Users (Username, Email, Password). Выходные данные: новость lit_news (title, text, date). |
|
Общий модуль, новости |
editnews.php |
Редактирование новости |
Входные данные: users (Username, Password), новый текст lit_news (title, small_text, text). Выходные данные: старый текст lit_news (title, small_text, text). |
|
Модуль пользователя |
user.php |
Персональная страница пользователя |
Входные данные: данные сессии (Username, Rights). Выходные данные:user_info (id, username, fullname, age, location, userinfo), w_trade (bookname, author, trade_info, date), w_read (bookname, author), readed (bookname, author), reviews (bookname, author, review, rating). |
|
Модуль пользователя |
useredit.php |
Редактировать пользовательскую информацию |
Входные данные: данные сессии (Username, Rights), вводимые данные userinfo (fullname, age, location, userinfo). Выходные данные: старые данные user_info (id, username, fullname, age, location, userinfo). |
|
Модуль пользователя |
addbook.php |
Добавить книгу в один из пользовательских разделов |
Входные данные: данные сессии (Username, Rights), w_trade (bookname, author, trade_info, date), w_read (bookname, author), readed (bookname, author). |
Продолжение таблицы 1
|
Модуль пользователя, личные сообщения |
messages.php |
Личные сообщения пользователя |
Входные данные: данные сессии (Username, Rights). Выходные данные: список сообщений messages (data, u_from, u_to, flag). |
|
Модуль пользователя, личные сообщения |
read_mes.php |
Развернуть личное сообщение |
Входные данные: данные сессии (Username, Rights). Выходные данные: сообщение messages (data, u_from, u_to, message). |
|
Модуль пользователя, личные сообщения |
pm.php |
Отправить сообщение |
Входные данные: данные сессии (Username, Rights), сообщение messages (data, u_from, u_to, message). |
|
Модуль администратора |
adminpanel.php |
Панель администратора с функциями бана, разбана, добавления книг и цитат в библиотеки и их редактирования |
Входные данные: данные сессии (Username, Rights). Выходные данные: user_info (username, rights), books (book_id, bookname, author, genre), site_news (title, text, username), lit_news (title, small_text, text, username), quotes (bookname, quote_text). |
|
Модуль администратора, библиотека |
library.php |
Справка по библиотеке для администратора |
Входные данные: данные сессии (Username, Rights). Выходные данные: books (book_id, bookname, author, genre). |
Таблица 2
|
Модуль |
Компонент |
Назначение компонента |
Входные и выходные данные |
|
Включено во всех модулях |
connect.php |
Включение переменных, содержащих данные для коннекта с СУБД и выбора конкретной БД на сервере, также устанавливается кодировка |
– |
|
Включено во всех общих модулях |
header.php |
«Шапка» для авторизованного пользователя |
Входные данные: данные сессии (Username). Выходные данные: (Username), форма log out, ссылка на модуль личных сообщений, для администратора – ссылка на панель администратора. |
Продолжение таблицы 2
|
Включено во всех общих модулях |
aheader.php |
«Шапка» для неавторизованного пользователя |
Кнопки входа (log in) и регистрации (register). |
|
Включено во всех модулях |
footer.php |
«подвал» |
Текст копирайта. |
|
Включено во всех общих модулях для авторизованного пользователя |
logout.php |
Кнопка окончания сессии |
Входные данные: данные сессии (Username), обновление активности пользователя и даты последней активности user_info (active, date). |
|
Модуль пользователя, перенаправление |
delete.php |
Удаление объявление об обмене |
Входные данные: данные сессии (Username, Rights), удаляемая позиция w_trade (item_id). |
|
Модуль пользователя, перенаправление |
deletew.php |
Удаление желаемой книги |
Входные данные: данные сессии (Username), удаляемая позиция w_read (w_id). |
Для передачи данных на сервер для работы с базой данных во всех модулях использовался метод POST. Для реализации динамически генерируемых страниц пользователей и страниц, содержащих личные сообщения, а также страниц, содержащих конкретную новость, использован метод GET. При этом если адрес к странице пользователя имеет следующий вид: «booktrade.org/user.php», то пользователь попадает на свою страницу. Также метод GET используется для реализации удаления записей с использованием отдельных модулей и обязательной проверкой прав пользователя; таким образом, запись может удалить исключительно либо пользователь, разместивший ее, либо администратор. Во всех модулях используются сессии, обязательно содержащие идентификационный номер, логин и права пользователя; данное решение было принято для реализации проверок подлинности пользователя во всех разделах, доступ к добавлению, редактированию, удалению и просмотру контента которых ограничен правами пользователей. При переходе на страницу logout.php все данные о сессии стираются и пользователь перенаправляется на стартовую страницу.