Добавлен: 28.03.2023
Просмотров: 225
Скачиваний: 2
СОДЕРЖАНИЕ
Каждый ресурс Интернета содержит несколько тематических рубрик, соединенных между собой гиперсвязями. Как правило, ссылки на все разделы сайта с краткими анонсами их содержимого приводится на первой, так называемой стартовой странице, которой присваивается имя index.htm (.html) или как в нашем случае index.php, так как основой создания сайта служит язык php. Если тематические рубрики содержат собственные подразделы, каждая из них также имеет свою стартовую страницу, называющуюся index.html.
Логическая структура сайта – это подобный набор тематических рубрик с распределенными по соответствующим разделам документами и заранее спроектированными гиперсвязями между всеми страницами ресурса.
Структурная схема сайта показана на рисунке (Рисунок 2.1).
Для отслеживания авторизации пользователей и их прав в системе используется механизм сессий. Сессии в PHP представляют из себя механизм сохранения на стороне сервера информации о компьютере клиента.
Сессии – это группы переменных, которые хранятся на сервере, но относятся к одному уникальному посетителю. Повторю, это ключевой момент: сессии хранятся на сервере.
Для того, чтобы обеспечить взаимодействие каждого посетителя с его данными из его сессии используется файл cookie, команду создать который PHP даёт сам, вам об это беспокоится не нужно. Этот cookie имеет значение только для сервера и не может быть использован для получения данных о пользователе.
На сервере данные сессии хранятся в текстовом файле, и они доступны в программе PHP в массиве $_SESSION. Чтобы сохранить переменную в сессии нужно присвоить ей значение в этом массиве.
Для проверки был ли осуществлен вход пользователя в систему и с какими правами создан модуль chkSession.php, вызываемый перед началом обработки каждого скрипта или вывода страницы сайта.
В данном модуле содержится следующий код:
<?php
/**
*
* Проверка сессии, входа пользователя в систему
*/
session_start();
$id_us = 0;
$id_rl = 0;
$usName = "";
$usMail = "";
if(isset($_SESSION["id_us"]))
$id_us = (int)$_SESSION["id_us"];
if(isset($_SESSION["id_rl"]))
$id_rl = (int)$_SESSION["id_rl"];
if(isset($_SESSION["usName"]))
$usName = $_SESSION["usName"];
if(isset($_SESSION["usMail"]))
$usMail = $_SESSION["usMail"];
Здесь переменные $id_us, $id_rl, $usName используются для получения информации о коде пользователя, его имени и роли в системе. Если переменная $id_us после проверки равна 0 – значит пользователя в системе не зарегистрировано.
Если $id_us > 0 значит в систему вошел один из авторизованных пользователей системы, роль которого определяется значением, сохраненным в id_rl.
В зависимости от значений данных переменных система будет выдавать ту или иную информацию, откроет или наоборот запретит доступ к некоторым пунктам меню системы.
Также для организации связи с базой данных и получения или добавления в нее информации необходимо установить соединение с сервером базы данных. Связь с базой данных устанавливается при помощи определенных параметров, характеризующих соединение. Для упрощения и параметризации организации связи с базой данных системы подготовим модуль ini.php, в котором определим параметры конфигурации соединения. Исходный код данного модуля:
<?php
// авторизация роли
const ADMIN = 1;
const MODERATOR = 2;
const AVTOR = 3;
const NOBODY=0;
// база данных, соединение
const DB_NAME = "fotos";
const DB_USER = "root";
const DB_HOST = "127.0.0.1";
const DB_PASS = "";
Описание структуры базы данных и ее функций
После проработки структуры сайта и разработаем базу данных системы. Сначала необходимо подготовить инфологическую модель базы данных.
Инфологическая модель предметной области представляет собой описание структуры и динамики предметной области, характера информационных потребностей пользователей в терминах, понятных пользователю и не зависимых от реализации БД. Это описание выражается в терминах не отдельных объектов предметной области и связей между ними, а их типов, связанных с ними ограничений целостности и тех процессов, которые приводят к переходу предметной области из одного состояния в другое.
Описание каждой сущности производится при помощи данных, называемых атрибутами или свойствами сущности. Атрибуты, как правило, представляют собой определения в высказывании о сущности и для их обозначения, используют имена существительные естественного языка. Сущности имеют связи друг с другом при посредстве включенных в них атрибутов. Каждое объединение атрибутов, составляющих описание одного реального проявления сущности, представляет из себя экземпляр сущности. Прочими словами, экземпляры сущности – это ее реализации, которые отличаются друг от друга и допускают однозначную идентификацию.
Каждый из атрибутов сущности имеет домен. Домен – это некоторое определенное выражение, описывающее значения, которые может принимать данный атрибут. Другими словами, домен – это определенная область возможных значений атрибута. На информационном уровне моделирования данных сопоставление домена атрибуту носит общий характер. К примеру, текстовый атрибут, числовой атрибут, бинарный, дата или "не определен".
Одним из главных компьютерных способов распознавания сущностей в базе данных является присвоение сущностям идентификаторов. Идентификатор сущности также называется ключом.
Построим описание атрибутов сущностей разрабатываемой системы.
Описание сущности Жанр (Таблица 3.1).
Таблица . – Атрибуты сущности Жанр
Атрибут |
Ключ |
Значение |
Домен |
Код жанра |
+ |
Идентификатор записи |
Число |
Наименование |
Название жанра фотографии |
Текст |
Описание сущности Роли (Таблица 3.3).
Таблица . – Атрибуты сущности Роли
Атрибут |
Ключ |
Значение |
Домен |
Код роли |
+ |
Идентификатор записи |
Число |
Наименование |
Наименование роли пользователя |
Текст |
Описание сущности Пользователи (Таблица 3.4).
Таблица . – Атрибуты сущности Пользователи
Атрибут |
Ключ |
Значение |
Домен |
Код пользователя |
+ |
Идентификатор записи |
Число |
Ник |
Никнейм пользователя, заданный при регистрации |
Текст |
|
Логин (E-Mail) |
Адрес электронной почты, используется как логин для входа |
Текст |
|
Пароль |
Пароль для входа в систему |
Текст |
|
Код роли |
Роль пользователя в системе |
Чсило |
Описание сущности Статьи (Таблица 3.5).
Таблица . – Атрибуты сущности Статьи
Атрибут |
Ключ |
Значение |
Домен |
Код статьи |
+ |
Идентификатор записи |
Число |
Название |
Наименование статьи |
Текст |
|
Анонс |
Краткий анонс |
Текст |
|
Текст |
Текст статьи |
Текст |
|
Дата публикации |
Дата публикации |
Дата |
|
Код пользователя |
Пользователь, разместивший статью |
Число |
Описание сущности Работы (Таблица 3.6).
Таблица . – Атрибуты сущности Работы
Атрибут |
Ключ |
Значение |
Домен |
Код работы |
+ |
Идентификатор записи |
Число |
Наименование |
Наименование работы |
||
Дата съемки |
Дата проведения съемки |
||
Описание |
Описание работы, условий съемки |
||
Файл |
Имя файла |
На основе построенных описаний сущностей и их атрибутов построим инфологическую схему базы данных (Рисунок 3.1).
Рисунок . – Логическая структура базы данных
Согласно подготовленной концептуальной схемы, построим физическую реализацию базы данных.
Физическое представление схемы базы данных приведено на схеме (Рисунок 3.2).
Рисунок . – Физическая схема базы данных
Для доступа и управления данными в программном комплексе системы, на уровне бизнес-логики приложения используются хранимые процедуры MySQL.
При помощи данных процедур организовывается управление данными, добавление записей в таблицы, удаление записей, проведение комплексных изменений в нескольких таблицах системы путем использования транзакций.
Приведем пример кода для процедуры userDel:
--
-- Создать процедуру `userDel`
--
CREATE DEFINER = 'root'@'%'
PROCEDURE userDel (IN _id_us int)
BEGIN
SET AUTOCOMMIT = 0;
START TRANSACTION;
DELETE
FROM works
WHERE id_us = _id_us;
DELETE
FROM works
WHERE id_us = _id_us;
DELETE
FROM users
WHERE id_us = _id_us;
COMMIT;
END
$$
Данная процедура по переданному ей коду пользователя удаляет все его работы и статьи из базы данных, а после уничтожает информацию о самом пользователе из таблиц базы данных.
Описание структуры клиентской части
Описание интерфейса «Обычный пользователь»
Начало любой работы с системой начинается с главной формы приложения (Рисунок 4.1).
Здесь пользователь при помощи меню может выбрать раздел, который его интересует, и затем прочитать статьи о фотографии или посмотреть работы других пользователей, зарегистрированных на сайте.
Для перехода к списку статей следует использовать пункт меню Статьи. При выборе данного пункта осуществиться переход на список статей, опубликованных на сайте (Рисунок 4.2).
Для просмотра заинтересовавшей статьи следует кликнуть на ее заголовке, после чего откроется полный текст статьи (Рисунок 4.3).
Использование пункта меню Работы откроет список работ, опубликованных авторами сервиса (Рисунок 4.4).
Рисунок . – Просмотр работ авторов сервиса
Описание интерфейса «Администратор»
Для того, чтобы использовать административные возможности системы, следует пройти авторизацию. Для этого требуется в меню системы воспользоваться кнопкой Вход (Рисунок 4.5).
Рисунок . – Меню системы неавторизованного пользователя
После чего будет открыта форма авторизации в системе, в которой следует ввести свои учетные данные (Рисунок 4.6).
После входа в систему, меню примет следующий вид (Рисунок 4.7).
Рисунок . – Меню администратора сайта
В данном меню кроме стандартных и предопределенных пунктов добавится пункт Справочники. При помощи данного пункта администратор имеет возможность вносить изменения в справочники системы (Рисунок 4.8).
Рисунок . – Справочники системы
Справочники обрабатываются при помощи табличного представления данных (Рисунок 4.9).
Кнопка Добавить осуществляет переход на форму запроса и добавления новой информации в справочник жанров (Рисунок 4.10).
Рисунок . – Добавление нового жанра
Кнопка Удалить, удаляет из справочника информацию о жанре, в одной строке с которым она расположена.
Кнопка Изменить – откроет форму, в которой необходимо внести изменения в существующую запись (Рисунок 4.11).