Файл: Разработка сайта магазина игрушек.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 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

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).