Добавлен: 28.03.2023
Просмотров: 156
Скачиваний: 2
Так главная страница – модуль index.php. Страница «О Магазине» - модуль about.php
Несмотря на различное назначение и наполнение разных страниц и используемых для их формирования модулей, каждая из них содержит заголовок, меню и подвал сайта.
Для отображения данных подразделов страниц информационного ресурса имеет смысл вынести их формирование в отдельные модули и подключать их по мере необходимости.
Так модуль header.php – используется для показа меню системы и для вывода заголовка сайта, footer.php – для отображения подвала.
Для контроля пользовательского входа в систему применяется механизм сессий.
Для отслеживания авторизации пользователей и их прав в системе используется механизм сессий. Сессии в PHP представляют из себя механизм сохранения на стороне сервера информации о компьютере клиента.
Сессии – это группы переменных, которые хранятся на сервере, но относятся к одному уникальному посетителю. Повторю, это ключевой момент: сессии хранятся на сервере.
Для того, чтобы обеспечить взаимодействие каждого посетителя с его данными из его сессии используется файл cookie, команду создать который PHP даёт сам, вам об это беспокоится не нужно. Этот cookie имеет значение только для сервера и не может быть использован для получения данных о пользователе.
На сервере данные сессии хранятся в текстовом файле, и они доступны в программе PHP в массиве $_SESSION. Чтобы сохранить переменную в сессии нужно присвоить ей значение в этом массиве.
Для проверки был ли осуществлен вход пользователя в систему и с какими правами, создадим метод Auth в модулях UserController.php и User.php, вызываемый перед началом обработки каждого скрипта или вывода страницы сайта.
В модуле UserController, «action» для страницы «Вход на сайт», содержится следующий код:
public function actionLogin()
{
$email = false;
$password = false;
if (isset($_POST['submit'])) {
$email = $_POST['email'];
$password = $_POST['password'];
$errors = false;
if (!User::checkEmail($email)) {
$errors[] = 'Неправильный email';
}
if (!User::checkPassword($password)) {
$errors[] = 'Пароль не должен быть короче 6-ти символов';
}
$userId = User::checkUserData($email, $password);
if ($userId == false) {
$errors[] = 'Неправильные данные для входа на сайт';
} else {
User::auth($userId);
header("Location: /cabinet");
В этом коде нас интересует параметр User::auth($userId);
Метод «auth» предназначен для запоминания пользователя и состоит из одной строки, что находится в User.php:
$_SESSION['user'] = $userId;
В этом методе используется механизм сессий: для того что бы воспользоваться сессий, нам нужно вызвать функцию «session_start();» которая, в свою очередь, находится в «index.php» для облегчения добавления новых «Action» модулей в код системы. Далее сайт будет пользоваться сессий при помощи суперглобального массива «$_SESSION». В этот массив записана переменная «[‘user’]» которая содержит идентификатор авторизированного пользователя: «$userId;».
Права администратора выдаются через БД сайта. Необходимость проверки пользователя на права администратора возникает только в том случае, если пользователь пытается войти в админпанель сайта. Для проверки пользователя был создан моудль AdminBase.php с абстрактным классом AdminBase. В модуле AdminBase.php содержится следующий код:
abstract class AdminBase
{
public static function checkAdmin()
{
$userId = User::checkLogged();
$user = User::getUserById($userId);
if ($user['role'] == 'admin') {
return true;
}
die('Access denied');
}
}
Здесь идет проверка авторизации пользователя. Код «$userId = User::checkLogged();» используется для оной проверки. Если же пользователь не авторизирован то он будет переадресован на страницу входа.
Код «$user = User::getUserById($userId);» получает информацию о текущем пользователе. Если роль текущего пользователя «admin» - он получает доступ к админпанели:
« if ($user['role'] == 'admin') {
return true;
}»
В противном случае сайт не дает доступ к админпанели сайта и выводит сообщение о закрытом доступе:
« die('Access denied');»
Также для организации связи с базой данных и получения или добавления в нее информации необходимо установить соединение с сервером базы данных. Связь с базой данных устанавливается при помощи определенных параметров, характеризующих соединение. Для упрощения и параметризации организации связи с базой данных системы подготовим модуль db_params.php, в котором определим параметры конфигурации соединения. Исходный код данного модуля:
<?php
return array(
'host' => 'localhost',
'dbname' => 'phpshop',
'user' => 'root',
'password' => '',
);
?>
Описание структуры базы данных и ее функций
После проработки структуры сайта и разработаем базу данных системы. Сначала необходимо подготовить инфологическую модель базы данных.
Инфологическая модель предметной области представляет собой описание структуры и динамики предметной области, характера информационных потребностей пользователей в терминах, понятных пользователю и не зависимых от реализации БД. Это описание выражается в терминах не отдельных объектов предметной области и связей между ними, а их типов, связанных с ними ограничений целостности и тех процессов, которые приводят к переходу предметной области из одного состояния в другое.
Описание каждой сущности производится при помощи данных, называемых атрибутами или свойствами сущности. Атрибуты, как правило, представляют собой определения в высказывании о сущности и для их обозначения, используют имена существительные естественного языка. Сущности имеют связи друг с другом при посредстве включенных в них атрибутов. Каждое объединение атрибутов, составляющих описание одного реального проявления сущности, представляет из себя экземпляр сущности. Прочими словами, экземпляры сущности – это ее реализации, которые отличаются друг от друга и допускают однозначную идентификацию.
Каждый из атрибутов сущности имеет домен. Домен – это некоторое определенное выражение, описывающее значения, которые может принимать данный атрибут. Другими словами, домен – это определенная область возможных значений атрибута. На информационном уровне моделирования данных сопоставление домена атрибуту носит общий характер. К примеру, текстовый атрибут, числовой атрибут, бинарный, дата или "не определен".
Одним из главных компьютерных способов распознавания сущностей в базе данных является присвоение сущностям идентификаторов. Идентификатор сущности также называется ключом.
Построим описание атрибутов сущностей разрабатываемой системы.
Описание сущности Категории (Таблица 3.1).
Таблица 3.1 – Атрибуты сущности Категории
Атрибут |
Ключ |
Значение |
Домен |
Код категории |
+ |
Идентификатор записи |
Число |
Наименование |
Наименование категории |
Текст |
Описание сущности Продукты (Таблица 3.2).
Таблица 3.2 – Атрибуты сущности Продукты
Атрибут |
Ключ |
Значение |
Домен |
Код продукта |
+ |
Идентификатор товара |
Число |
Название |
Наименование товара |
Текст |
|
Категория |
Категория товара |
Число |
|
Код |
Код товара |
Число |
|
Цена |
Цена товара |
Число |
|
Наличие |
Наличие товара на складе |
Число |
|
Марка |
Марка товара |
Текст |
|
Описание |
Описание товара |
Текст |
|
Новизна |
Обозначение новых товаров |
Число |
|
Рекомендация |
Обозначение рекомендованных товаров |
Число |
|
Статус |
Обозначение статуса товаров |
Число |
Описание сущности Пользователь (Таблица 3.).
Таблица 3.3 – Атрибуты сущности Пользователь
Атрибут |
Ключ |
Значение |
Домен |
Код пользователя |
+ |
Идентификатор записи |
Число |
Имя |
Имя пользователя |
Текст |
|
|
Email пользователя |
Текст |
|
Пароль |
Пароль пользователя |
Текст |
|
Роль |
Роль пользователя |
Текст |
Описание сущности Заказы (Таблица 3.4).
Таблица 3.4 – Атрибуты сущности Заказы
Атрибут |
Ключ |
Значение |
Домен |
Код заказа |
+ |
Идентификатор заказа |
Число |
Имя |
Имя пользователя |
Текст |
|
Номер телефона |
Номер телефона пользователя |
Число |
|
Комментарий |
Комментарий пользователя к сделанному заказу |
Текст |
|
Код пользователя |
+ |
Идентификатор записи |
Число |
Дата |
Дата заказа |
Число |
|
Марка |
Марка товара |
Текст |
|
Продукты |
Идентификатор товара и их количество |
Число |
|
Статус |
Обозначение статуса товаров |
Число |
На основе построенных описаний сущностей и их атрибутов построим схему базы данных, представленную далее (Рисунок 3.1).
Рисунок 3.1 – Схема базы данных
Для доступа и управления данными в программном комплексе системы интернет магазина «BABYLAND.RU», на уровне бизнес-логики приложения используются хранимые процедуры MySQL.
При помощи данных процедур организовывается управление данными, добавление записей в таблицы, удаление записей, проведение комплексных изменений в нескольких таблицах системы путем использования транзакций.
Приведем пример кода «save» для процедуры «order»:
public static function save($userName, $userPhone, $userComment, $userId, $products)
{
$db = Db::getConnection();
$sql = 'INSERT INTO product_order (user_name, user_phone, user_comment, user_id, products) '
. 'VALUES (:user_name, :user_phone, :user_comment, :user_id, :products)';
$products = json_encode($products);
$result = $db->prepare($sql);
$result->bindParam(':user_name', $userName, PDO::PARAM_STR);
$result->bindParam(':user_phone', $userPhone, PDO::PARAM_STR);
$result->bindParam(':user_comment', $userComment, PDO::PARAM_STR);
$result->bindParam(':user_id', $userId, PDO::PARAM_STR);
$result->bindParam(':products', $products, PDO::PARAM_STR);
return $result->execute();
}
Данная процедура используется для сохранения заказа в базу данных.
Описание структуры клиентской части
Описание интерфейса «Обычный пользователь»
Начало работы начинается с главной страницы сайта (Рисунок 4.1).
Рисунок 4.1 – Главная страница сайта
Для получения доступа к функционалу пользователя, необходимо воспользоваться кнопкой вход, которая направит пользователя на форму запроса данных для входа в систему, после использования которой пользователя перенаправит на страницу Кабинет (Рисунок 4.2).
Рисунок 4.2 – Кабинет обычного пользователя
Появившийся новый пункт меню Редактировать данные служит для изменения имени пользователя или пароля. Для завершения работы необходимо использовать кнопку Выход.
Описание интерфейса «Администратор»
Если воспользоваться входом в систему под аккаунтом администратора меню системы магазина примет следующий вид (Рисунок 4.3).
Рисунок 4.3 – Меню администратора
В данном виде меню появится пункт Управление. При помощи данного пункта администратор системы имеет возможность вносить изменения в справочники системы, регистрировать новые товары, назначать им категории.
Пример работы с «Управлением товарами» приведен на рисунке (Рисунок 4.).
Рисунок 4.4 – Справочник товаров
Кнопка «Добавить товар» осуществляет переход на форму запроса и добавления новых товаров в список. (Рисунок 4.).
Рисунок 4.5 – Форма добавления нового товара
Кнопка «Х», удаляет из списка определенный товар.
Подобным образом построена работа с прочими справочниками системы.
Для перемещения и управления функционалом необходимо использовать систему меню информационной системы (Рисунок 4.6).
Рисунок 4.6 – Меню информационной системы.
Для входа в систему служит кнопка вход, для регистрации – Регистрация. По кнопке регистрация происходит переход на форму регистрации в системе (Рисунок 4).
Рисунок 4.7 – Форма регистрации
Для зарегистрированных пользователей, а так же гостей, доступна возможность покупки товаров. Для заказа товара достаточно нажать на кнопку «В корзину» (Рисунок 4.8).