Разработка сайта интернет-магазина фильмов «FilmStore»
Содержание:
Введение
Итогом разработки данной курсовой работы должен стать сайт интернет-магазина фильмов.
Сайт должен будет обладать своей базой данных, откуда будет выводится вся информация о товаре, а также системой регистрации и авторизации для совершения покупок.
Интерфейс не зарегистрированного посетителя будет самый упрощенный. Такой посетитель сможет просматривать информацию главной страницы, список товаров и сами товары. Купить товар посетитель сможет только зарегистрировавшись, тем самым перейдя в категорию пользователей.
Интерфейс пользователя должен давать возможность совершать покупки, а также открывать доступ к личному профилю, где будут отображаться баланс пользователя, фильмы, которые он уже купил, фильмы, отложенные в список желаемых, список избранных фильмов и настройки профиля.
Помимо текстовой информации о фильмах необходимо предоставлять покупателю еще и графическую - фотографии фильмов. Дизайн сайта должен быть выполнен в спокойном неагрессивном стиле, не отвлекающем пользователя от основной задачи - совершения покупок.
Так же будет присутствовать проверка и разграничение прав доступа к различному контенту сайта в зависимости от прав пользователя.
В качестве web-приложения в данном проекте будет выступать интернет- магазин “FilmStore” ориентирующийся на продаже цифровых версии фильмов различных жанров.
Данный сайт охватывает аудиторию любых возрастов и категорий. При первом заходе на страницу магазина пользователи смогут просматривать товары на главной странице, а также их подробное описание. При регистрации и авторизации, покупателям становится доступна функция покупки фильма, а так же появляется доступ в профиль пользователя, поэтому регистрация является обязательной мерой для совершения действий на сайте. Все содержимое товаров (описание, картинки, цена) хранится в базе данных MySQL и с помощью языка PHP выводится на экран.
Для реализации статической части сайта был выбран текстовый редактор Atom.
Atom (в прошлом Atomicity) — бесплатный текстовый редактор с открытым исходным кодом для Linux, macOS, Windows с поддержкой плагинов, написанных на Node.js, и встраиваемых под управлением Git. Большинство плагинов имеют статус свободного программного обеспечения, разрабатываются и поддерживаются сообществом.
Atom основан на Electron (ранее известный как Atom Shell) — фреймворке кросс-платформенной разработки с использованием Chromium и io.js. Редактор написан на CoffeeScript и LESS. Версия 1.0 была выпущена 25 июня 2015 г.
Поддержка языков
Поддерживаются следующие языки (со стандартными плагинами) в версии v1.5.1:
C/C++, C#, Clojure, CSS, CoffeeScript, Markdown (GitHub Flavored), Go, Git, HTML, JavaScript, Java, JSON, Julia, Less, Make, Mustache, Objective-C, PHP, Perl, Property List (Apple), Python, Ruby on Rails, Ruby, Sass, Shell script, Scala, SQL, TOML, XML, YAML (Все языки).
В качестве серверной платформы я выбрал виртуальный сервер под названием OpenServer за его простоту, огромную функциональность и поддержку различных баз данных и других компонентов, нужных для разработки, отладки и тестирования веб-проектов, а так же для предоставления веб-сервисов в локальных сетях.
Полный состав данного платформы изображен на рисунке 1.
Рисунок 1
В качестве системы управления базы данных у меня выступает MySQL -5.7, так же для администрирования СУБД MySQL я выбрал приложение phpMyAdmin.
MySQL — свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.
Входит в состав серверов WAMP, AppServ, LAMP и в портативные сборки серверов Денвер, XAMPP, VertrigoServ. Обычно MySQL используется в качестве сервера, к которому обращаются локальные или удалённые клиенты, однако в дистрибутив входит библиотека внутреннего сервера, позволяющая включать MySQL в автономные программы.
MySQL 5.7
Первая версия ветки MySQL 5.7.1 анонсирована 23 апреля 2013. Версия MySQL 5.7.8 адаптирована для Debian 8 и Ubuntu 15.04. Последний релиз — 5.7.24 от 22.10.2018.
phpMyAdmin — веб-приложение с открытым кодом, написанное на языке PHP и представляющее собой веб-интерфейс для администрирования СУБД MySQL. PhpMyAdmin позволяет через браузер и не только осуществлять администрирование сервера MySQL, запускать команды SQL и просматривать содержимое таблиц и баз данных. Приложение пользуется большой популярностью у веб-разработчиков, так как позволяет управлять СУБД MySQL без непосредственного ввода SQL команд.
Приложение распространяется под лицензией GNU General Public License и поэтому многие другие разработчики интегрируют его в свои разработки, например XAMPP, Denwer, AppServ, Open Server.
Для реализации серверной части сайта, осуществляющей динамическую составляющую проекта выбор пал на язык программирования PHP за его простоту использования и популярность среди хостинг-провайдеров.
В области веб-программирования, в частности серверной части, PHP — один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).
Популярность в области построения веб-сайтов определяется наличием большого набора встроенных средств и дополнительных модулей для разработки веб-приложений.
Основные из них:
- автоматическое извлечение POST- и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;
- взаимодействие с большим количеством различных систем управления базами данных через дополнительные модули (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO), Redis;
- автоматизированная отправка HTTP-заголовков;
- работа с HTTP-авторизацией;
- работа с cookies и сессиями;
- работа с локальными и удалёнными файлами, сокетами;
- обработка файлов, загружаемых на сервер;
- работа с XForms.
Теперь опишем серверную часть сайта и ее программных модулей. Схема взаимосвязи программных модулей отражает взаимосвязь программного и информационного обеспечения комплекса задач, и может быть представлен несколькими схемами, каждая из которых соответствует определенному режиму.
Схема взаимосвязь программных модулей представлена на рисунке 2.
Схема взаимосвязи программных модулей
Рисунок 2
Описание программных модулей
Управляющий модуль - активирует основные программные модули, содержит меню сайта "FilmStore". По сути это главная страница сайта, к которой подключены все остальные страницы. С этой главной страницы можно перейти на любую другую страницу сайта. Именно к главной странице первым делом подключается база данных и выводит весь контент на экран.
Модуль проверки данных регистрации - отвечает за правильность вводимой информации при регистрации, а именно проверяет длину вводимых данных (поле имя – не меньше двух символов и не больше пятнадцати; поле логин – не меньше четырех символов и не больше пятнадцати; поле пароль – так же не меньше четырех символов и не больше пятнадцати.
Модуль проверки данных авторизации - отвечает за правильность вводимого логина и пароля. После того, как пользователь введет свои данные и нажмет кнопку «Авторизоваться», будет отправлен запрос в базу на проверку наличия таких данных в базе и проверку правильности написания этих данных. Если пользователь совершит ошибку в поле логина или пароля, или же попробует войти без регистрации, то выведется окно с ошибкой:
После чего покупатель должен будет вернуться к форме авторизации и ввести свои данные правильно.
Модуль обработки информации - отвечает за обработку информации, которая вводится в формы регистрации и авторизации.
Модуль базы данных - отвечает за хранение основной информации на сайте. Иными словами это сама база данных сайта. Добавление, редактирование и удаление контента происходит именно здесь. При любом действии на сайте, будь то регистрация новых пользователей, либо вход уже зарегистрировшихся отправляется запрос именно в базу данных, откуда и черпается вся информация на сайте.
Дерево функций представляет собой иерархическую структуру действий, реализованных в информационной системе. Вершиной дерева функций является главная цель магазина, ветви дерева представляют собой функции (или работы), которые необходимо реализовать для достижения главной цели кампании и подчиненных ей целей нижнего уровня. Дерево функций изображено на рисунке 3.
Дерево функций
Рисунок 3
База данных «film_store» проекта состоит из двух таблиц: таблицы «films» и таблицы «users». База данных представлена на рисунке 4.
База данных «film_store»
Рисунок 4
Таблица «films» - основная таблица со всем контентом на сайте, в свою очередь состоит из следующих полей:
Поле «id» - представляет собой идентификатор объекта базы данных;
Поле «image» - хранит в себе путь к картинкам, которые лежат в директории «img» и выводятся на сайте;
Поле «title» - строка заголовка или иначе названия фильмов, представленных на сайте;
Поле «mini_desc» - мини описание каждого фильма, приводимого на главной странице сайта;
Поле «description» - полное описание фильма, которое показывается на странице single.php;
Поле «price» - поле, в котором отражена цена фильма.
Таблица «films» показана на рисунке 5, 5.1
Таблица «films»
Рисунок 5
Таблица «films»
Рисунок 5.1
Таблица «users» - показывает всех пользователей, которые зарегистрированы на сайте. Состоит из четырёх полей:
Поле «id» - идентификатор пользователя базы данных;
Поле «name» - хранит в себе имя, введенное пользователем при регистрации;
Поле «login» - хранит логин пользователя, введенный при регистрации;
Поле «password» - хранит пароль, введенный пользователем при регистрации.
Таблица «users» изображена на рисунке 6, 6.1.
Таблица «users»
Рисунок 6
Таблица «users»
Рисунок 6.1
В данной главе мы опишем следующие информационные разделы сайта:
- главную страницу сайта;
- раздел сайта «О нас»;
- раздел сайта «Связаться с нами»;
- раздел сайта «Корзина»;
- форму регистрации и авторизации на сайте;
- профиль покупателя;
- подробное описание товара;
- форму заказа товара;
Код всех страниц представлен в Приложении 1 в разделе Приложения.
Главная страница сайта — своеобразная визитная карточка интернет-ресурса, на которой должна быть изложена важная информация для клиента: сведения о компании, контактные данные, предложения и преимущества.
Таким образом, к основным целям главной страницы относятся: презентация компании, привлечение аудитории и представление возможных услуг и/или товаров.
Сайт-магазин, как правило, имеет более десятка страниц и сложную структуру. В нашем случае сайт менее глобальный, поэтому главная страница нашего ресурса будет иметь следующие разделы информации:
- блок с логотипом сайта и его слоганом (выполняет функцию приветствия покупателя и его завлечения)
- сами товары (с кратким описанием, ценой и кнопкой «Подробнее» ведущей к подробному описанию фильма с возможностью его покупки (по умолчанию отключена))
- верхнее навигационное меню (с основными разделами сайта)
Главная страница сайта представлена на рисунке 7
Главная страница
Рисунок 7
Раздел магазина «О нас» отражает подробное описание сайта, его направленность, показывает окружение, на которое рассчитан сайт, а также приводит свои преимущества перед остальными похожими интернет-магазинами.
Данную страницу можно увидеть на рисунке 8
Страница «О нас»
Рисунок 8
5.3 Раздел сайта «Связаться с нами»
Следующий раздел нашего магазина назван «Связаться снами».
В нем отражена контактная связь с администрацией сайта, которая состоит из:
- телефона магазина;
- адреса магазина;
- личной электронной почты;
- личной ссылки в социальных сетях;
Данную страницу можно увидеть на рисунок 9
Страница «Связаться с нами»
Рисунок 9
В разделе «Корзина» покупатель может увидеть свои покупки совершенные на сайте, продолжить покупки, удалить товар из корзины, а также оформить заказ.
Страница пустой корзины представлена на рисунке 10, а с товарами на рисунке 11.
Пустая «Корзина»
Рисунок 10
Полная «Корзина»
Рисунок 11
5.5 Форма «Регистрации» и «Авторизации»
Регистрация и авторизация пользователей на сайте всегда была одним из основных шагов, чтобы получить полноценный доступ к товарам сайта/интернет-магазина. В нашем случае для того, чтобы пользователь смог совершить покупку, он должен в обязательном порядке сначала зарегистрироваться, а затем войти в свою учетную запись, где ему станет доступна функция покупки товара, а так же страница своего профиля.
Форма регистрации на нашем сайте содержит следующие поля:
- «Введите имя» - длина имени должна быть не меньше 2 символов;
- «Введите логин» - длина логина должна быть не меньше 4 символов и не больше 90 символов;
- «Введите пароль» - длина пароля должна составлять не меньше 4 символов и не больше 90 символов;
После нажатия на кнопку «Зарегистрироваться» данные, введенные покупателем, сразу попадают в базу данных, а форма автоматически переключается на форму «Авторизация».
Форма авторизации
- «Введите логин» - ввод своего логина, указанного при регистрации;
- «Введите пароль» - ввод пароля, указанного при регистрации;
Как только пользователь нажимает на кнопку «Авторизоваться», он попадает на главную страницу сайта, в верхнем меню вместо кнопки «Войти» становится доступна кнопка «Профиль», ведущая в личный профиль пользователя. Также после авторизации пользователь может добавлять товары в корзину и производить покупки в магазине.
Форму регистрации и авторизации можно увидеть на рисунках 12 и 13.
Форма «Регистрация»
Рисунок 12
Форма «Авторизация»
Рисунок 13
Раздел «Профиль» состоит из двух частей. В правой части покупатель может посмотреть свою коллекцию фильмов, которые он уже купил, проверить свой баланс в магазине, увидеть фильмы, которые он добавил в избранные, посмотреть свои желания, а также заглянуть в настройки профиля. В левой части профиля пользователь может изменить свое фото профиля и добавить какую-либо информацию. Увидеть страницу профиля можно на рисунке 14.
Страница «Профиль»
Рисунок 14
5.7 Раздел подробного описания товара
На этой странице покупатель может более подробно ознакомиться с выбранным фильмом и, если он вошел в свою учетную запись в магазине, добавить товар в корзину, либо сразу же купить его. Увидеть страницу подробного описания авторизованного и не авторизованного пользователя можно на рисунке 15 и 15.1.
Страница «Подробнее» не авторизованного пользователя
Рисунок 15
Страница «Подробнее» авторизованного пользователя
Рисунок 15.1
На странице «Заказ» авторизованный покупатель может произвести покупку выбранных фильмов. Для этого необходимо заполнить поля, указанные в форме и нажать кнопку «Заказать». Посмотреть на данную страницу можно на рисунке 16.
Страница «Заказ»
Рисунок 16
Для того чтобы совершить покупку фильма в интернет-магазине «FilmStore», покупатель должен выполнить следующие шаги:
- Нажать на кнопку «Регистрация» в верхнем меню
- Ввести данные в форму «Регистрации» и анажать кнопку «зарегистрироваться»
Пользователя перекинет на страницу авторизации
- Заполнить форму «Авторизация» и нажать кнопку «авторизоваться»
Далее пользователя перекидывает на главную страницу магазина
- Выбрать понравившийся фильм и нажать «Подробнее» в нижней части карточки фильма
- Далее покупатель может либо положить товар в корзину (нажав на кнопку «Добавить в корзину» и продолжить покупки на сайте (кнопка «Продолжить покупки»), либо сразу же перейти к покупке выбранного фильма (кнопка «Купить в 1 клик»)
- После того как товар оказался в корзине, нужно нажать кнопку «Оформить заказ»
- Заполнить приведенную форму заказа и нажать на кнопку «Заказать», либо если покупатель вдруг перехотел покупать какой-либо фильм нажать «Изменить заказ»
Поздравляю!! Заказ совершен.
6. Заключение
В результате выполнения данной курсовой работы был разработан сайт интернет-магазина фильмов «FilmStore».
Визуальная составляющая сайта была построена с помощью HTML и CSS, а серверную часть держат PHP и MySQL.
Функционал сайта позволяет выполнять возложенные на него обязанности. Тестирование сайта проводилось в браузере Opera 68.0.
-
Список использованной литературы
- https://ru.wikipedia.org/wiki/Atom_(текстовый_редактор);
- https://ru.wikipedia.org/wiki/PhpMyAdmin;
- https://ru.wikipedia.org/wiki/PHP;
- https://ru.wikipedia.org/wiki/MySQL;
- https://ospanel.io.
- Приложения
Приложение 1
Страница подключения к базе данных db.php
<?php
$host = "localhost";
$user = "root";
$pass = "";
$db_name = "film_store";
$connection = mysqli_connect($host, $user, $pass, $db_name);
if (mysqli_connect_errno()) {
die("Data Base connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ")");
} else {
# echo "Connection = success!\n" . mysqli_get_host_info($connection) . "<br />";
}
mysqli_query($connection, "SET NAMES utf8");
?>
Главная страница index.php
<?php
session_start();
require_once "db.php";
$query = "SELECT * FROM films";
$req = mysqli_query($connection, $query);
$data_from_db = [];
while ($result = mysqli_fetch_assoc($req)) {
$data_from_db[] = $result;
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Film store</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<!-- Custom styles for this template -->
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<title></title>
</head>
<style>
.card {
width: 350px;
height: 850px;
float: left;
background: #fff;
color: #000;
margin: 0 20px;
margin-left: 6.5%;
margin-bottom: 35px;
padding: 10px ;
padding-top: 10px;
}
</style>
<body>
<!-- Navigation -->
<?php require "header.php" ?>
<div class="container">
<div class="jumbotron jumbotron-fluid">
<div class="container">
<h1 class="display-4">Film store</h1>
<p class="lead">Лучшие фильмы, лучшее качество, лучшие цены.</p>
</div>
</div>
<div class="row">
<div class="col-lg-12">
<div class="row">
<?php foreach ($data_from_db as $card): ?>
<div class="main-card">
<div class="card">
<img class="card-img-top" src="<?php echo $card['image']?>" width="600" height="400" alt="">
<div class="card-body">
<h2>
<?php echo $card['title']?>
</h2>
<p>
<?php echo $card['mini_desc']?>
</p>
<p><strong>
<?php echo $card['price']?> руб
</strong></p>
<a class="btn btn-outline-secondary" href="single.php?id=<?php echo $card['id']?>">
Подробнее
</a>
</div>
</div>
</div>
<?php endforeach; ?>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «О нас» about.php
<?php
session_start();
require_once "db.php";
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 850px;
height: 550px;
float: left;
margin: 35px 20px;
margin-left: 10%;
margin-top: 9%;
margin-bottom: 10.2%;
padding: 10px ;
padding-top: 10px;
}
</style>
<body>
<?php require "header.php" ?>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<h1>Уважаемые любители кино!</h1><br>
<p>    Наш интернет-магазин фильмов <b>FilmStore</b> предлагает вашему вниманию самые разные коллекции фильмов.
Покупая у нас фильмы, Вы не просто приобретаете коллекцию фильмов и мультфильмов, но также сможете окунуться в мир приключений и фантастики.<br><br>    Наши коллекции фильмов постоянно пополняются новинками кинопроката от Нашей компании.
Интернет-магазин <b>FilmStore</b> – это отличная находка для любого киномана и просто отличный подарок для всей семьи,ведь Вы имеете возможность получить лучшие произведения мирового и отечественного кинематографа за самую низкую цену и с удовольствием смотреть фильмы каждый день. Вы оплачиваете фильм всего один раз и смотрите его сколько угодно, ведь он навсегда сохранится в вашей библиотеке фильмов.
<br><br>    Покупая фильмы в <b>FilmStore</b> Вы всегда будете иметь личную коллекцию фильмов под рукой. Смотреть фильмы <b>FilmStore</b> можно как на современных ТВ,так и на компьютере или планшете(IPAD),домашнем кинотеатре. Достаточно просто оплатить понравившийся фильм и через мгновенье можно уже наслаждаться его просмотром.</p>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «Связаться с нами» contact.php
<?php
session_start();
require_once "db.php";
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 500px;
height: 300px;
float: left;
margin: 35px 20px;
margin-left: 25%;
margin-top: 20%;
margin-bottom: 21.1%;
padding: 10px;
padding-top: 10px;
}
</style>
<body>
<?php require "header.php" ?>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<h1>Как с нами связаться</h1>
<p>Наш телефон: 8(495)777-77-77</p>
<p>Наш адрес: Москва, Багратионовский пр. 7, корп. 1</p>
<p>Наша почта: filmstore@mail.ru</p>
<p>Мы в соц. сетях:
<a class="btn btn-outline-secondary" href="/" title="Группа ВК" target="_blank">VK</a>
</p>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «Корзина» cart.php
<?php
session_start();
require_once "db.php";
require_once "functions.php";
if ( isset($_GET['delete_id']) && isset($_SESSION['cart_list']) ) {
foreach ($_SESSION['cart_list'] as $key => $value) {
if ( $value['id'] == $_GET['delete_id'] ) {
unset($_SESSION['cart_list'][$key]);
}
}
}
if ( isset($_GET['card_id']) && !empty($_GET['card_id']) ) {
$current_added_card = get_card_by_id($_GET['card_id']);
if ( !empty($current_added_card) ) {
if ( !isset($_SESSION['cart_list'])) {
$_SESSION['cart_list'][] = $current_added_card;
}
$films_check = false;
if ( isset($_SESSION['cart_list']) ) {
foreach ($_SESSION['cart_list'] as $value) {
if ( $value['id'] == $current_added_card['id'] ) {
$films_check = true;
}
}
}
if ( !$films_check ) {
$_SESSION['cart_list'][] = $current_added_card;
}
} else {
header("Location: 404.php");
}
}
// var_dump($_SESSION);
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
</head>
<style>
.card {
width: 500px;
height: 300px;
float: left;
margin: 35px 20px;
margin-left: 25%;
margin-top: 10%;
margin-bottom: 27%;
padding: 10px;
padding-top: 10px;
}
.card a {
width: 150px;
margin-right: 3%;
}
</style>
<body>
<?php require "header.php" ?>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<h1>Корзина</h1>
<?php if ( isset($_SESSION['cart_list']) && count($_SESSION['cart_list']) !=0 ) : ?>
<ul>
<?php foreach( $_SESSION['cart_list'] as $card ) : ?>
<li>
<?php echo $card['title']; ?> |
<?php echo $card['price']; ?> руб. |
<a href="cart.php?delete_id=<?php echo $card['id'];?>">Удалить</a>
</li>
<?php endforeach; ?>
</ul>
<?php else : ?>
<p>
Ваша корзина пуста
</p>
<?php endif; ?>
<a class="btn btn-outline-secondary" href="index.php">Продолжить покупки</a>
<a class="btn btn-outline-secondary" href="order.php">Оформить заказ</a>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница формы «Регистрация» reg.php
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 850px;
height: 500px;
float: left;
margin: 35px 20px;
margin-left: 10%;
margin-top: 9%;
margin-bottom: 14.6%;
padding: 10px;
padding-top: 10px;
}
</style>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="/">FilmStore</a>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Главная
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Связаться с нами</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<form class="box" action="check.php" method="post">
<h2>Регистрация</h2><br>
<input type="text" class="form-control" name="name" id="name" placeholder="Введите имя"><br>
<input type="text" class="form-control" name="login" id="login" placeholder="Введите логин"><br>
<input type="password" class="form-control" name="password" id="password" placeholder="Введите пароль"><br>
<button class="btn btn-outline-secondary" type="submit">Зарегистрироваться</button><br><br>
<p>Либо</p> <a class="btn btn-outline-secondary" href="auth.php">Авторизоваться</a>
</form>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница формы «Авторизация» auht.php
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 650px;
height: 500px;
float: left;
margin: 35px 20px;
margin-left: 25%;
margin-top: 9%;
margin-bottom: 14.6%;
padding: 10px;
padding-top: 10px;
}
</style>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="/">FilmStore</a>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Главная
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Связаться с нами</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<form class="box" action="checkauth.php" method="post">
<h2>Авторизация</h2><br>
<input type="text" class="form-control" name="login" id="login" placeholder="Введите логин"><br>
<input type="password" class="form-control" name="password" id="password" placeholder="Введите пароль"><br>
<button class="btn btn-outline-secondary" type="submit">Авторизоваться</button><br><br>
<p>Еще не зарегистрированы?</p> <a class="btn btn-outline-secondary" href="reg.php">Зарегистрируйтесь!</a>
</form>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «Профиль» profile.php
<?php
session_start();
require_once "db.php";
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="utf-8">
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
<title>Film store</title>
</head>
<style>
.container2 {
width: 900px;
height: 600px;
border: 1px solid #000;
margin: 0 auto;
margin-top: 80px;
margin-bottom: 90px;
border-radius: 1%;
border-color: #dcdde1;
}
.left_block {
width: 350px;
height: 600px;
border: 1px solid #000;
margin-right: 40%;
border-radius: 2%;
border-color: #dcdde1;
}
h3 {
padding-left: 20%;
}
.left_block button {
margin-left: 20%;
cursor: pointer;
padding-left: 10%;
padding-right: 10%;
}
.left_block button[name = Баланс] {
padding-left: 11%;
padding-right: 11%;
}
.left_block button[name = Избранное] {
padding-left: 12%;
padding-right: 12%;
}
.left_block button[name = Желания] {
padding-left: 14.5%;
padding-right: 14.5%;
}
.left_block button[name = Настройки] {
padding-left: 12.5%;
padding-right: 12.5%;
}
.row {
width: 350px;
margin-left: -0.5%;
border-radius: 5%;
padding-top: 2%;
padding-bottom: 4%;
}
.right_block {
width: 500px;
height: 600px;
margin-left: 44.5%;
margin-top: -67%;
border-radius: 2%;
}
h4 {
text-align: center;
font-size: 2em;
}
.row2 {
padding: 2% 0 2% 0;
}
img {
margin-top: 6%;
margin-left: 5%;
border-radius: 50%;
}
button {
margin-left: 7%;
}
.box {
width: 200px;
height: 300px;
margin-left: 50%;
margin-top: -50%;
}
</style>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark fixed-top">
<div class="container">
<a class="navbar-brand" href="/">FilmStore</a>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link" href="index.php">Главная
<span class="sr-only">(current)</span>
</a>
</li>
<li class="nav-item">
<a class="nav-link" href="about.php">О нас</a>
</li>
<li class="nav-item">
<a class="nav-link" href="contact.php">Связаться с нами</a>
</li>
<li class="nav-item">
<a class="nav-link" href="cart.php">Корзина
<span id="cart_count">
<?php
if (isset ($_SESSION['cart_list'])) {
echo count($_SESSION['cart_list']);
} ?>
</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="exit.php">Выйти</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container2">
<div class="left_block">
<div class="row">
<h3>Меню профиля</h3>
</div><br><br>
<button class="btn btn-outline-secondary" name="Мои фильмы">Мои фильмы</button><br><br>
<button class="btn btn-outline-secondary" name="Баланс">Мой баланс</button><br><br>
<button class="btn btn-outline-secondary" name="Избранное">Избранное</button><br><br>
<button class="btn btn-outline-secondary" name="Желания">Желания</button><br><br>
<button class="btn btn-outline-secondary" name="Настройки">Настройки</button>
</div>
<div class="right_block">
<div class="row2">
<h4>Мой профиль</h4>
</div>
<img src="img/logo.jpg" width="150" height="200"><br><br>
<button class="btn btn-outline-secondary">Редактировать</button>
<div class="box">
Профиль пока что пустой
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «подробного описания» фильма single.php
<?php
session_start();
//if (isset($_SESSION['cart_list'])) {
// echo "КОРЗИНА: " . count($_SESSION['cart_list']) . " шт";
//}
require_once "db.php";
if ( isset($_GET['id']) ) {
$query = "SELECT * FROM films WHERE id=" . $_GET['id'];
$req = mysqli_query($connection, $query);
$current_card = mysqli_fetch_assoc($req);
// var_dump($current_film);
if (empty($current_card)) {
header("Location: 404.php");
}
}
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 1100px;
height: auto;
float: left;
margin: 35px 20px;
margin-left: 10%;
padding: 10px ;
padding-top: 10px;
}
</style>
<body>
<?php require "header.php" ?>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<h1>
<?php echo $current_card['title']?>
</h1>
<p>
<?php echo $current_card['decsription']?>
</p>
<p><strong>
<?php echo $current_card['price']?> руб
</strong></p>
<?php
if($_COOKIE['user'] == ''): ?>
<?php else: ?>
<a class="btn btn-outline-secondary" href="order.php?title=<?php echo $current_card['title']?>">Купить в 1 клик</a><br><br>
<a class="btn btn-outline-secondary" href="cart.php?card_id=<?php echo $current_card['id']?>">Добавить в корзину</a>
<?php endif; ?>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница «Заказ» order.php
<?php
session_start();
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>FilmStore</title>
<link href="vendor/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<link href="css/shop-homepage.css" rel="stylesheet">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
</head>
<style>
.card {
width: 500px;
height: auto;
float: left;
margin: 35px 20px;
margin-left: 25%;
margin-top: 15%;
margin-bottom: 23.9%;
padding: 10px;
padding-top: 10px;
}
</style>
<body>
<?php require "header.php" ?>
<div class="container">
<div class="row">
<div class="card">
<div class="card-body">
<h1>Заказ</h1>
<form>
<?php if ( isset($_GET['title']) ) : ?>
<p>Вы заказываете фильм: <?php echo $_GET['title']; ?></p>
<?php elseif ( isset($_SESSION['cart_list']) ) : ?>
<ul>
<?php foreach( $_SESSION['cart_list'] as $card ) : ?>
<li><?php echo $card['title']; ?> | <?php echo $card['price']; ?> руб.</li>
<?php endforeach; ?>
</ul>
<p>
<a class="btn btn-outline-secondary" href="cart.php">Изменить заказ</a>
</p>
<?php endif; ?>
<form class="contact_form" action="#" method="post" name="contact_form">
<input type="text" class="form-control" name="name" id="name" placeholder="Введите имя"><br>
<input type="email" class="form-control" name="email" id="email" placeholder="Введите почту"><br>
<input type="mobile" class="form-control" name="mobile" id="mobile" placeholder="Введите телефон"><br>
<a class="btn btn-outline-secondary" href="contact.php">Заказать</a>
</form>
</form>
</div>
</div>
</div>
</div>
<?php require "footer.php" ?>
</body>
</html>
Страница выхода exit.php
<?php
setcookie('user', $user['name'], time() - 3600, "/");
header('Location: index.php');
?>
- Разработка автоматизированной системы учета лекарств в аптеке
- Современные политические режимы .
- Классификация управленческих решений (Классификация управленческих решений)
- Эллиптические конструкции в современном английском языке (на материале публицистических изданий) (Определение понятия «эллипсис»)
- Фразеологические средства и перевод (Особенности фразеологизмов)
- Сходство и отличие требований права и морали (основные характеристики права)
- ТЕОРЕТИЧЕСКИЕ АСПЕКТЫ КОРПОРАТИВНОЙ КУЛЬТУРЫ ПРЕДПРИЯТИЯ
- Корпоративная культура в организации (Сущность корпоративной культуры: понятие, виды)
- Процессный подход к менеджменту .(Особенности применения процессного подхода)
- Применение проектных технологий в качестве инструмента развития бизнеса (В СТРОИТЕЛЬНОЙ КОМПАНИИ «СТРОЙМАСТЕР»)
- Организационное изменение: основные источники и механизмы (Сопротивление изменениям в организации))
- Применение процессного подхода для оптимизации бизнес-процессов (анализ и описание)