Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Разработка сайта магазина игрушек

Содержание:

Введение

Информация во все времена играла очень важную роль в жизнедеятельности человека. С давнего времени сбор и приведение в систему сведений об окружающей среде помогали человеку выживать в сложных условиях – передавая от поколения к поколению опыт и навыки приготовления орудий для охоты и труда, шитья одежды и изготовления лекарств. Информация беспрерывно обновлялась и дополнялась – всякое исследованное явление открывало путь к чему-то новому, более сложному. С течением времени, большие объемы данных об окружающем мире поспособствовали развитию научно-технического прогресса и, как следствие, в целом всего общества – человек смог научиться управлять различными видами вещества и энергии.

Использование компьютерной техники и всевозможных устройств глубоко проникло в повседневную жизнь людей. И многие используют в своей деятельности различные информационные технологии, базы данных, и прочее, даже не представляя об этом.

В настоящей работе требуется спроектировать информационную систему интернет магазина, позволяющую пользователям просматривать и заказывать интересующие их товары.

Техническое задание выбор средств реализации

Техническое задание

В качестве предметной области для создания web-приложения выступает интернет магазин BABYLAND.RU, для которого необходимо разработать информационную систему по отображению информации о наличии товаров новинок, а также показывающую общую информацию о магазине.

На сайте интернет магазина необходимо представить информацию о товарах, которые продаются или будут продаваться в интернет магазине в ближайшее время.

За наполнение сайта необходимой информацией отвечает администратор, в обязанности которого входит:

  • слежение за актуальностью информации, хранимой в справочниках системы;
  • заполнение информации о товарах.
  • установка и наполнение новых товаров в магазине.

Основной информацией хранимой в справочниках системы является информация, характеризующая описание самих товаров, а также о цене и количестве различной техники. Стоимость товара может варьироваться в зависимости от технических характеристик, модели, и вида товара.

Кроме администратора система предусматривает возможность регистрации и работы обычного пользователя. Данный пользователь обладает возможностью просматривать информацию о товарах, и возможности покупки различных товаров.

Также на сайт интернет магазина можно заходить в режиме гостя, в данном случае посетитель ресурса имеет возможность просмотра информации о интересующих его товарах и новинок в режиме ознакомления. Для возможности приобретения билетов данному посетителю можно будет пройти регистрацию в системе или заполнить данные уже в процессе.

Возможные варианты использования и способы доступа на сайт и доступные функции для каждого из пользователей показаны на схеме (Рисунок 1.1).

Рисунок 1.1 – Схема вариантов использования

Кроме ведения и показа справочной информации на сайте необходимо предусмотреть информационные страницы с описанием деятельности магазина и контактной информацией для связи с сотрудниками.

В виду того, что система должна обладать определенной динамичностью, следует внимательно подходить к выбору средств реализации системы. Для обеспечения хранения данных потребуется использование базы данных.

Проект должен соответствовать современным требованиям, и использовать в своей реализации последние наработки и достижения в области сайтостроения. Готовое решение должно поддерживаться мобильными устройствами и нормально отображаться на них и быть полностью читабельным и иметь хорошую юзабилити на любых устройствах. Что предъявляет требования адаптивности к дизайну системы.

Средства реализации

HTML5

HTML5 (англ. HyperText Markup Language, version 5) — язык для структурирования и представления содержимого всемирной паутины. Это пятая версия HTML. [2] Хотя стандарт был завершён (рекомендованная версия к использованию) только в 2014 году (предыдущая, четвёртая, версия опубликована в 1999 году), ещё с 2013 года браузерами оперативно осуществлялась поддержка, а разработчиками — использование рабочего стандарта (англ. HTML Living Standard). Цель разработки HTML5 — улучшение уровня поддержки мультимедиа-технологий с одновременным сохранением обратной совместимости, удобочитаемости кода для человека и простоты анализа для парсеров.

Во всемирной паутине долгое время использовались стандарты HTML 4.01, XHTML 1.0 и XHTML 1.1. Веб-страницы на практике оказывались свёрстаны с использованием смеси особенностей, представленных различными спецификациями, включая спецификации программных продуктов, например, веб-браузеров, а также сложившихся общеупотребительных приёмов. HTML5 был создан как единый язык разметки, который мог бы сочетать синтаксические нормы HTML и XHTML. Он расширяет, улучшает и рационализирует разметку документов, а также добавляет единый API для сложных веб-приложений.

CSS

Спецификация CSS3 – это неоспоримое будущее в области декоративного оформления веб-страниц, и ее разработка еще далека от завершения. Большинство модулей все еще продолжает совершенствоваться и модифицироваться, и ни один браузер не поддерживает все модули. Это означает, что CSS3 испытывает такие же сложности, как и HTML5. Веб-разработчикам нужно решать, какие возможности использовать, а какие игнорировать, а также каким образом заполнить зияющие пробелы в браузерной поддержке.[2]

Аббревиатура CSS расшифровывается, как «каскадные таблицы стилей» (от англ. Cascading Style Sheets). Таблицы стилей предназначены для визуального оформления элементов веб-страницы. Как правило, CSS используется в связке с HTML, что является весьма эффективным «инструментом» при создании любого сайта. Именно поэтому, наряду с изучением HTML также рекомендуется изучить технологию CSS.

Спецификация CSS3 не является частью спецификации HTML5. Эти два стандарта были разработаны отдельно друг от друга, разными людьми, работающими в разное время в различных местах. Но даже организация W3C призывает веб-разработчиков использовать HTML5 и CSS3 вместе, как часть одной новой волны современного веб-дизайна.

Аббревиатура CSS расшифровывается, как «каскадные таблицы стилей» (от англ. Cascading Style Sheets). Таблицы стилей предназначены для визуального оформления элементов веб-страницы. Как правило, CSS используется в связке с HTML, что является весьма эффективным «инструментом» при создании любого сайта. Именно поэтому, наряду с изучением HTML также рекомендуется изучить технологию CSS.

CSS представляет собой совокупность параметров, с помощью которых отображается тот или иной элемент на веб-странице. Эти параметры могут указываться, как в отдельном файле (таблице стилей), так и быть прописаны непосредственно в HTML коде страницы. Например, на нашей веб странице могут быть такие элементы: заголовок статьи, абзацы, цитаты, сноски, картинки, видео ролики, ссылки на другие страницы сайта и т.д. Всем этим элементам мы можем задать определенный стиль отображения – размер шрифта, цвет букв, толщину рамок и картинок, стиль ссылок и так далее.

При работе с сайтом рекомендуется использовать именно отдельный файл со стилями, а не внедрять код со стилевыми настройками в отдельные страницы. Это поможет заметно сократить время разработки, так как при этом, все стили находятся в одном месте и при необходимости всегда можно оперативно найти конкретный стиль и изменить его. Файл со стилями имеет расширение .css.

JavaScript

JavaScript (JS для краткости) является языком программирования, который позволяет веб-страницам отвечать на действия пользователя дальше базового уровня. Он был создан в начале 90-х фирмой Netscape, браузер которой Netscape Navigator в те времена был наиболее популярным средством для просмотра веб-сайтов. Название javascript наводит на мысли о связи с языком java, который также может использоваться в веб-программировании, и, действительно, javascript разрабатывался во многом с опорой на язык Java, но следует всё же помнить, что это совершенно разные языки. Скрипты, написанные на javascript, выполняются на стороне клиента (т. е. на компьютере пользователя), и не просто на стороне клиента, а в самом браузере, поэтому не требуется никаких дополнительных программ, никаких плагинов и т. п., скрипт можно просто вставить в html-код страницы, и он будет выполняться в любом браузере. Javascript - простой и удобный язык, позволяющий легко управлять содержимым веб-страницы, отслеживая самые различные действия пользователя, и реагируя на это. Благодаря этому, javascript практически не имеет конкурентов в своей области применения и является первым языком, изучение которого нужно начинать веб-разработчику.

Bootstrap

Бутстрап — это css и js-фреймворк, по сути, по сути, набор файлов с готовым написанным кодом. Цель разработчиков практически любого фреймворка — упростить разработку сайта себе и другим, кому будет доступен инструмент. В случае с Bootstrap он полностью бесплатен, так что вы можете использовать его любым образом, редактировать исходный код и как угодно переделывать фреймворк под себя.

Классы Bootstrap можно разбить на 3 большие группы:

  • классы для создания сетки (адаптивного макета страницы).
  • классы для стилизации контента (текста, кода, изображений, таблиц и другой информации).
  • служебные классы (для решения наиболее часто встречающихся вспомогательных задач, таких как выравнивание, управление отображением, добавление границ и др.).

Кроме классов во фреймворке Bootstrap имеются ещё и компоненты (готовые объекты интерфейса). Это кнопки, хлебные крошки, формы, навигационные меню, выпадающие списки, всплывающие панели и др.

Применение фреймворка во время создания сайтов позволит решить многие задачи:

  • создание качественных адаптивных сайтов
  • современный дизайн (единый стиль оформления HTML элементов и компонентов).
  • является кроссбраузерным и кроссплатформенным (работает на всех популярных операционных системах и браузерах (Mozilla Firefox, Google Chrome, Safari, Internet Explorer и Opera и пр.).
  • является открытым и бесплатным, что означает, что его можно использовать бесплатно как для личного, так и для коммерческого использования.

MySQL

MySQL – это одна из самых популярных и получивших широкое распространенние СУБД (система управления базами данных) для интернета ресурсов. Данная система не предназначена для обеспечения обработки больших объемов информации, но ее использование идеально в сфере интернет-сайтов, как не очень небольших, так и весьма крупных ресурсах.

MySQL выделяется прекрасной скоростью работы, он надежен и гибок. Работа с ним, в основном, не вызывает каких-либо затруднений. Что немаловажно – автоматическая поддержка сервера MySQL присутствует в поставке PHP.

PHP

PHP (рекурсивный акроним словосочетания PHP: Hypertext Preprocessor) – это распространенный язык программирования общего назначения с открытым исходным кодом. PHP специально сконструирован для веб-разработок и его код может внедряться непосредственно в HTML и наоборот, HTML теги легко добавляются к скриптам, написанным на PHP.

PHP отличается от JavaScript тем, что PHP-скрипты выполняются на сервере и генерируют HTML, который посылается клиенту.

В настоящее время PHP широко применяется не только для непосредственного создания динамических сайтов, но и для написания инструментов и средств web-разработки. На данном языке создано большое количество всевозможных фреймворков и готовых систем управления контентом (всевозможных CMS и CMR).

Описание модулей серверной части программы и их взаимодействие

Реализация сайта требует разработки общей структуры сайта, определяющей, что, где и на каких страницах будет расположено.

Рисунок 2.1 – Структурная схема сайта

Каждый ресурс Интернета содержит несколько тематических рубрик, соединенных между собой гиперсвязями. Как правило, ссылки на все разделы сайта с краткими анонсами их содержимого приводится на первой, так называемой стартовой странице, которой присваивается имя index.htm (.html) или как в нашем случае index.php, так как основой создания сайта служит язык php. Если тематические рубрики содержат собственные подразделы, каждая из них также имеет свою стартовую страницу, называющуюся index.html.

Логическая структура сайта – это подобный набор тематических рубрик с распределенными по соответствующим разделам документами и заранее спро­ектированными гиперсвязями между всеми страницами ресурса.

Структурная схема сайта показана на рисунке (Рисунок 2.1).

Каждая страница ресурса представлена отдельным php модулем.

Так главная страница – модуль 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).

Рисунок 4.8 – Магазин

На данной странице нужно выбрать интересующий товар и нажать кнопку «В корзину», система добавит товар в корзину а пользователь сможет дальше просматривать интернет магазин.. По умолчанию выводится список популярных и рекомендуемых товаров. Для приобретения товара необходимо перейти на вкладку «Корзина» и воспользоваться кнопкой «Оформить заказ», располагаемой под выбранными товарами (Рисунок 4.9).

Рисунок 4.9 – Покупка товара

Заключение

В ходе выполнения данной работы были решены следующие задачи

  • дано общее описание автоматизируемого объекта;
  • построена модель базы данных;
  • спроектировано и реализовано приложение для работы и управления созданной базой данных с применением web-технологий.

В процессе выполнения работы была создана база данных, с применением среды MySQL. Реализация проекта велась с применением языков CSS, HTML, PHP, а также м использованием языка SQL запросов для обращения и изменения информации в связанной базе данных системы.

Результатом работы явилось достижение целей:

  • закрепление теоретического материала по дисциплинам, связанных с изучением баз данных;
  • практические навыки создания web-ресурса с применением языка программирования PHP.

Разработана информационная система интернет магазина «BABYLAND.RU». Система создана с применением современных средств и технологий, имеет адаптивный дизайн, проверена и протестирована для отображения на мобильных и десктопных устройствах.

Литература

  1. Пирогов, В.Ю. Информационные системы и базы данных: организация и проектирование: Учебное пособие / В.Ю. Пирогов. - СПб.: БХВ-Петербург, 2009. - 528 c.
  2. Вадим Дунаев. HTML, скрипты и стили. BHV, Санкт-Петербург, 2015. ISBN 978-5-9775-3317-1.
  3. Н. Закас, Джереми Мак-Пик, Джо Фосетт. Ajax для профессионалов. Перевод: Александр Киселев. Символ, Санкт-Петербург, 2015. ISBN 978 5 93286-081-6.
  4. К. Блессинг, Роб Черни, К. Шмитт. Применение Web-стандартов CSS и Ajax для больших сайтов. Корона-Век, Санкт-Петербург, 2011. ISBN 978 5 7931-0844-7.
  5. Adobe Dreamweaver CS6. Официальный учебный курс. Эксмо, Москва, 2014. ISBN 978-5-699-69655-0.
  6. Чои Вин. Как спроектировать современный сайт. Питер, Санкт-Петербург, 2011. ISBN 978-5-459-00579-0.
  7. А. Годин, К. Джонсон, К. Уоррен, М. Уэбер, Брайан Хоган. Книга веб-программиста: секреты профессиональной разработки веб-сайтов. Питер, Санкт-Петербург, 2013. ISBN 978-5-459-01510-2.
  8. Алан Купер, Дэйв Кронин, Кристофер Носсел, Роберт Рейман. Алан Купер об интерфейсе. Основы проектирования взаимодействия. Символ, Санкт-Петербург, 2015. ISBN 978-5-93286-132-5.
  9. Стив Круг. Как сделать сайт удобным. Юзабилити по методу Стива Круга. Питер, Санкт-Петербург, 2010. ISBN 978-5-49807-515-0.
  10. Кирилл Сухов. HTML 5. Путеводитель по технологии. ДМК, Москва, 2013. ISBN 978-5-94074-910-3.

Исходные коды

Index.php

<?php

// Общие настройки

ini_set('display_errors',1);

error_reporting(E_ALL);

session_start();

// Подключение файлов системы

define('ROOT', dirname(__FILE__));

require_once(ROOT.'/components/Autoload.php');

// Вызов Router

$router = new Router();

$router->run();

header.php

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="utf-8">
    5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    6. <meta name="description" content="">
    7. <meta name="author" content="">
    8. <title>Главная</title>
    9. <link href="/template/css/bootstrap.min.css" rel="stylesheet">
    10. <link href="/template/css/font-awesome.min.css" rel="stylesheet">
    11. <link href="/template/css/prettyPhoto.css" rel="stylesheet">
    12. <link href="/template/css/price-range.css" rel="stylesheet">
    13. <link href="/template/css/animate.css" rel="stylesheet">
    14. <link href="/template/css/main.css" rel="stylesheet">
    15. <link href="/template/css/responsive.css" rel="stylesheet">
    16. <!--[if lt IE 9]>
    17. <script src="js/html5shiv.js"></script>
    18. <script src="js/respond.min.js"></script>
    19. <![endif]-->
    20. <link rel="shortcut icon" href="/template/images/ico/favicon.ico">
    21. <link rel="apple-touch-icon-precomposed" sizes="144x144" href="/template/images/ico/apple-touch-icon-144-precomposed.png">
    22. <link rel="apple-touch-icon-precomposed" sizes="114x114" href="/template/images/ico/apple-touch-icon-114-precomposed.png">
    23. <link rel="apple-touch-icon-precomposed" sizes="72x72" href="/template/images/ico/apple-touch-icon-72-precomposed.png">
    24. <link rel="apple-touch-icon-precomposed" href="/template/images/ico/apple-touch-icon-57-precomposed.png">
    25. </head><!--/head-->
    26. <body>
    27. <div class="page-wrapper">
    28. <header id="header"><!--header-->
    29. <div class="header_top"><!--header_top-->
    30. <div class="container">
    31. <div class="row">
    32. <div class="col-sm-6">
    33. <div class="contactinfo">
    34. <ul class="nav nav-pills">
    35. <li><a href="#"><i class="fa fa-phone"></i> +7 999-911-91-91</a></li>
    36. <li><a href="#"><i class="fa fa-envelope"></i> Hoper34rus@yandex.ru</a></li>
    37. </ul>
    38. </div>
    39. </div>
    40. <div class="col-sm-6">
    41. <div class="social-icons pull-right">
    42. <ul class="nav navbar-nav">
    43. </ul>
    44. </div>
    45. </div>
    46. </div>
    47. </div>
    48. </div><!--/header_top-->
    49. <div class="header-middle"><!--header-middle-->
    50. <div class="container">
    51. <div class="row">
    52. <div class="col-sm-4">
    53. <div class="logo pull-left">
    54. <a href="/"><img src="/template/images/home/logo.png" alt="" /></a>
    55. </div>
    56. </div>
    57. <div class="col-sm-8">
    58. <div class="shop-menu pull-right">
    59. <ul class="nav navbar-nav">
    60. <li><a href="/cart">
    61. <i class="fa fa-shopping-cart"></i> Корзина
    62. (<span id="cart-count"><?php echo Cart::countItems(); ?></span>)
    63. </a>
    64. </li>
    65. <?php if (User::isGuest()): ?>
    66. <li><a href="/user/login/"><i class="fa fa-lock"></i> Вход</a></li>
    67. <?php else: ?>
    68. <li><a href="/cabinet/"><i class="fa fa-user"></i> Аккаунт</a></li>
    69. <li><a href="/user/logout/"><i class="fa fa-unlock"></i> Выход</a></li>
    70. <?php endif; ?>
    71. </ul>
    72. </div>
    73. </div>
    74. </div>
    75. </div>
    76. </div><!--/header-middle-->
    77. <div class="header-bottom"><!--header-bottom-->
    78. <div class="container">
    79. <div class="row">
    80. <div class="col-sm-12">
    81. <div class="navbar-header">
    82. <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
    83. <span class="sr-only">Toggle navigation</span>
    84. <span class="icon-bar"></span>
    85. <span class="icon-bar"></span>
    86. <span class="icon-bar"></span>
    87. </button>
    88. </div>
    89. <div class="mainmenu pull-left">
    90. <ul class="nav navbar-nav collapse navbar-collapse">
    91. <li><a href="/">Главная</a></li>
    92. <li class="dropdown"><a href="#">Магазин<i class="fa fa-angle-down"></i></a>
    93. <ul role="menu" class="sub-menu">
    94. <li><a href="/catalog/">Каталог товаров</a></li>
    95. <li><a href="/cart/">Корзина</a></li>
    96. </ul>
    97. </li>
    98. <li><a href="/about/">О магазине</a></li>
    99. <li><a href="/contacts/">Контакты</a></li>
    100. </ul>
    101. </div>
    102. </div>
    103. </div>
    104. </div>
    105. </div><!--/header-bottom-->
    106. </header><!--/header-->

Autoload.php

<?php

/**

* Функция __autoload для автоматического подключения классов

*/

function __autoload($class_name)

{

// Массив папок, в которых могут находиться необходимые классы

$array_paths = array(

'/models/',

'/components/',

'/controllers/',

);

// Проходим по массиву папок

foreach ($array_paths as $path) {

// Формируем имя и путь к файлу с классом

$path = ROOT . $path . $class_name . '.php';

// Если такой файл существует, подключаем его

if (is_file($path)) {

include_once $path;

}

}

}

footer.php

<div class="page-buffer"></div>

</div>

<footer id="footer" class="page-footer"><!--Footer-->

<div class="footer-bottom">

<div class="container">

<div class="row">

<p class="pull-left">Copyright © 2019</p>

<p class="pull-right">Курсовая</p>

</div>

</div>

</div>

</footer><!--/Footer-->

<script src="/template/js/jquery.js"></script>

<script src="/template/js/jquery.cycle2.min.js"></script>

<script src="/template/js/jquery.cycle2.carousel.min.js"></script>

<script src="/template/js/bootstrap.min.js"></script>

<script src="/template/js/jquery.scrollUp.min.js"></script>

<script src="/template/js/price-range.js"></script>

<script src="/template/js/jquery.prettyPhoto.js"></script>

<script src="/template/js/main.js"></script>

<script>

$(document).ready(function(){

$(".add-to-cart").click(function () {

var id = $(this).attr("data-id");

$.post("/cart/addAjax/"+id, {}, function (data) {

$("#cart-count").html(data);

});

return false;

});

});

</script>

</body>

</html>