Добавлен: 28.03.2023
Просмотров: 544
Скачиваний: 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).