Добавлен: 28.06.2023
Просмотров: 75
Скачиваний: 4
- Apache
- PHP
- Mysql
- Веб – сервер Apache давно обрел популярность, благодаря ему работает большинство сайтов в сети интернет и обрабатываются запросы.
Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.
- PHP (Hypertext Preprocessor) — скриптовый язык общего назначения, интенсивно применяемый для разработки веб –приложений. В настоящее время поддерживается подавляющим большинством хостинг – провайдеров и является одним из лидеров среди языков, применяющихся для создания динамических веб –сайтов.
- MySQL – свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей.
Данный СУБД был выбран из-за своего тесной связи с языком PHP. Так как для работы с СУБД MySQL, PHP разработчику не приходиться добавлять сторонние библиотеки или иные функции.
Примечание:
Так же можно перечислить современные браузеры, например «Google Chrome» или «Mozilla Firefox». Для настройки проекта. Так как если на компьютере будет установлена не актуальная версия, то нас ждет масса проблем, так как некоторые браузеры не поддерживают некоторые функции, которые появились в HTML5.
Чтобы приступить к разработке проекта, необходимо спроектировать схему баз данных (Ели бы мы использовали CMS, то мы бы могли пропустить данный пункт, так как большинство интернет магазинов универсальные и не пришлось бы добавлять новые таблицы или проектировать схему БД).
Рисунок 2.1 Схема БД Интернет магазина по продаже цветов
После представления схемы БД нашего интернет магазина, представим таблицы БД и подробно опишем их назначения и роли в проекте.
Таблица 2.1 Таблица admin
Столбец |
Тип |
Null |
Назначения |
Id |
int(11) |
Нет |
Идентификатор |
_login |
varchar(20) |
Нет |
Логин |
_password |
varchar(33) |
Нет |
Пароль |
Таблица admin используется для идентификации пользователя с правами администратора.
Далее будет представлена таблица pokupateli которая хранит данные о клиентах.
Таблица 2.2 Таблица pokupateli
Столбец |
Тип |
Null |
Назначения |
id |
int(11) |
Нет |
Идентификатор |
fio |
varchar(50) |
Нет |
ФИО |
phone |
varchar(20) |
Нет |
Уникальный номер телефона |
|
varchar(50) |
Нет |
Уникальная почта |
password |
varchar(32) |
Нет |
Пароль |
adress |
Text |
Да |
Адрес |
Если клиент заказывает цветы другому человеку, то ему необходимо указать персональные данные получателя, для этого создана таблица poluchateli.
Таблица 2.3 Таблица poluchateli
Столбец |
Тип |
Null |
Назначения |
Id |
int(11) |
Нет |
Идентификатор |
id_pokupatel |
int(11) |
Нет |
Идентификатор покупателя |
Fio |
varchar(50) |
Нет |
ФИО |
Phone |
varchar(20) |
Нет |
Номер телефона |
|
varchar(50) |
Нет |
Почта |
date_ |
Date |
Нет |
Дата получения заказа |
Adres |
Text |
Нет |
Адрес |
Ниже представлена таблица категория товаров(цветов).
Таблица 2.4 Таблица tovar_category
Столбец |
Тип |
Null |
Назначения |
id |
int(11) |
Нет |
Идентификатор |
name |
varchar(255) |
Нет |
Названия категорий |
image |
text |
Нет |
Изображения |
Таблица для хранения данных о товаре.
Таблица 2.5 Таблица tovary
Столбец |
Тип |
Null |
Назначения |
Id |
int(11) |
Нет |
Идентификатор |
Label |
varchar(255) |
Нет |
Заголовок |
Price |
Float |
Нет |
Цена |
category_id |
int(11) |
Нет |
Идентификатор категория цветов |
Image |
Text |
Нет |
Изображения |
Count |
int(11) |
Нет |
Количество в наличии |
About |
text |
Нет |
Дополнительное описания |
Таблица для хранения данных о заказе.
Таблица 2.6 Таблица zakaz
Столбец |
Тип |
Null |
Назначения |
Id |
int(11) |
Нет |
Идентификатор |
pokupatel_id |
int(11) |
Нет |
Идентификатор покупателя |
COMMENT |
text |
Да |
Комментарий |
Dpokup |
datetime |
Да |
Дата оформления |
Status |
int(11) |
Да |
Статус заказа |
Так как один заказ, может иметь несколько товаров, для обеспечения данной возможности была реализована таблица zakaz_tovar, который по идентификатору заказа сопоставляет товары.
Таблица 2.7 Таблица zakaz_tovar
Столбец |
Тип |
Null |
Назначения |
id |
int(11) |
Нет |
Идентификатор |
zakaz_id |
int(11) |
Нет |
Идентификатор заказа |
tovar_id |
int(11) |
Нет |
Идентификатор товара |
count |
int(11) |
Да |
Количество |
После проектирования схемы БД приступаем к реализацию проекта:
Прежде чем начать разработку необходимо создать каталоги для хранения файлов проекта.
Рисунок 2.2 Структура каталогов проекта
В представленной структуре (рисунок 2.2) каталог «admin» содержит php модули, которые относятся к пользователю с правами администратора. Каталог «helpers» содержит настройки и дополнительные функции для подключения к СУБД. Каталог «public» хранит в себе статические файлы, например каскадные стили и изображения товаров. Каталог «users» содержит модули для заказчика.
Прежде чем начать разработку модулей необходимо создать файл конфигурации, который будет использоваться для взаимодействия с СУБД.
Представленный код из «Приложения А» используется для подключения к СУБД. Так же реализованы методы для выполнения запросов с возвращаемым значением и с не возвращаемым значением. Для защиты от SQL инъекции реализована функция f_screening.
Реализации функции регистрация администратора:
Исходный код реализации представлен в «приложении Б».
Результат выполнения представленного кода представлен на рисунке 2.3.
Рисунок 2.3 Регистрация под пользователем с правами администратора
Для того что бы не каждый пользователь мог зарегистрироваться с правами администратора было добавлено поле секретный ключ, значение которого хранится в файле конфигурации.
Исходный код реализации данной функции представлен в пункте «Приложение В».
Представленный код проверяет, имеется ли пост запрос с параметрами логин и пароль, если имеется логин и свертка (хеш) пароля сравнивается с паролем в базе данных. Если по таким данным находится пользователь, то его идентификатор записывается в сессию и в дальнейшем будет проверяться при посещении страниц, которые требуют права администратора.
Ниже, на рисунке 2.4 представлен результат выполнения представленного кода:
Рисунок 2.4 Авторизация под пользователем с правами администратора
Реализация функции добавления категорий товаров:
Исходный код, реализации функции добавления категорий товаров представлен в пункте «Приложение Г».
Представленный код проверяет наличие post запросов со значением названия категорий и изображений, если все параметры учтены, то изображения категорий сохранятся в каталоге «images», а имя файла и названия категорий будут сохранены в таблице «tovar_category».
Рисунок 2.5 Добавления категорий товаров
После добавления категорий, добавленная категория будет представлена в пункте меню список категорий товаров (рисунок 2.6).
Рисунок 2.6 Просмотр список категорий товаров
При нажатии на каждую категорию мы получаем те товары, которые содержатся в данной категории (рисунок 2.7).
Рисунок 2.7 Просмотр список товаров
Данный функционал обеспечивается при добавлении товара (рисунок 2.8):
Рисунок 2.8 Просмотр список товаров
Исходный код реализации добавления товара представлен в пункте «Приложение Д».
Ниже будут описаны наиболее интересные возможности сайта:
Реализация функциональности корзины для покупок. Исходный код реализации представлен в пункте «Приложение Е».
Представленный из приложения код добавляет товар в корзину, подсчитывает сумму заказа, так же дает возможность удалить товары из корзины, пример работы данной реализации представлен на рисунках 2.9 и 2.10.
Рисунок 2.9 Добавления товара в корзину
Рисунок 2.10 Удаления товара из корзины
Примечание:
Данные товара хранятся в сессии.
Так же благодаря сессиям были реализованы функции для защиты от неавторизированных лиц.
<?php
session_start();
if (!isset($_SESSION['uid']))
{
header('Location:./signin.php');
}
?>
Данная функция проверяет авторизирован пользователь или нет, если пользователь не авторизирован, то он перенаправляется на страницу авторизации.
Ниже будет представлен пример тестирования интернет магазина по продажи цветов.
Главная страница сайта:
На главной странице сайта представлены категории товаров (рисунок 2.11), реализована функция поиска (в области навигации добавлены страницы, которые информируют клиентов о деятельности интернет магазина, так же размещены контактные данные).
Рисунок 2.11 Главная страница
При нажатии на определенную категорию пользователь получает товары из этой категории. Так же пользователь может ввести фразу и нажать на кнопку «Поиск» таким образом, тоже может получить товары по найденной фразе.
Рисунок 2.12 Товары по категориям
При нажатия на товар появляется страница, на которой можно ознакомиться с подробным описанием товара, узнать информацию по наличию товара, добавить его в корзину и указать желаемое количество.
Рисунок 2.13 Добавления в корзину
После добавления товара в корзину их цена суммируется в области навигации.
Рисунок 2.14 Корзина
При нажатия на корзину пользователь перенаправляется на страницу представленной на рисунке 2.10.