Создание интернет-магазина с форумом и административной частью

Разработка и написание программного обеспечения для интернет-магазина по продаже свежих овощей в режиме "online". Функциональные требования, схема данных. Главная страница сайта, корзина, регистрация пользователя. Описание классов и файлов программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 18.04.2013
Размер файла 1,2 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Оглавление

  • Введение
  • Глава 1. Техническое задание
  • Глава 2. Технический проект
  • 2.1 Описание схемы данных
  • 2.2 Клиентская часть
  • 2.3 Описание классов и файлов программы
  • Приложение A. Исходный код
  • Приложение Б. Снимки страниц

Введение

Заданием курсовой работы является разработка и написание программного обеспечения для интернет-магазина по продаже свежих овощей.

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

Глава 1. Техническое задание

1.1. Задача: разработать интернет-магазин по продаже свежих овощей, который предоставит возможность посетителям совершать покупки.

1.2. Функциональные требования:

1. Возможность просмотра каталога товаров.

2. Наличие наименования товара в каталоге товаров.

3. Наличие описания товара в каталоге товаров.

4. Наличие стоимости товара в каталоге товаров.

5. Возможность регистрации новых пользователей.

6. Возможность добавить адрес пользователя.

7. Возможность указать способ оплаты.

8. Наличие корзины товаров.

9. Наличие наименования товара в корзине товаров.

10. Наличие цены выбранного товара в корзине товаров.

11. Возможность просматривать общую стоимость выбранных товаров.

12. Возможность добавлять товары в корзину товаров.

13. Возможность удалять товары в корзину товаров.

1.3. Нефункциональные требования:

1. Одинаково быстрая работа на разного рода устройствах (ПК, телефоны, смартфоны, планшетные компьютеры).

2. Работа в современных браузерах Internet Explorer 5.5 и выше, Mozilla Firefox 7.01 и выше, Safari 5.1.7 и выше, Google Chrome 13.0.772.0 (быстрая загрузка страниц).

3. Проект должен быть написан на языке программирования PHP.

4. Использовать базы данных MySQL версии 5.0 и выше.

5. Работать на веб-сервере Apache.

6. Веб-сайт должен иметь пользовательскую часть.

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

8. Не хранить пароли в БД в открытом виде.

9. Клиентские требования для Windows: Windows XP с пакетом обновления 2 или более поздней версии; Windows Vista; Windows 7; Windows 8.

10. Клиентские требования для Mac: Mac OS X 10.6 или более поздняя версия.

11. Клиентские требования для Linux: Ubuntu 10.04+; Debian 6+; OpenSUSE 11.3+; Fedora Linux 14.

12. Наличие процессора для Windows: Intel Pentium 4 или более поздней версии.

13. Наличие процессора для Mac: Intel.

14. Наличие процессора для Linux: Intel Pentium 3/Athlon 64 или более поздней версии.

15. Свободное место на диске для Windows: 100 МБ.

16. Свободное место на диске для Mac: 100 МБ.

17. Свободное место на диске для Linux: 100 МБ.

18. Клиентские требования к ОЗУ для Windows: 128 МБ.

19. Клиентские требования к ОЗУ для Mac: 128 МБ.

20. Клиентские требования к ОЗУ для Linux: 128 МБ.

интернет магазин пользователь программа

Глава 2. Технический проект

2.1 Описание схемы данных

2.1.1 Таблица Client

В таблице содержится информация о клиентах. Таблица имеет поля:

id - первичный ключ, name - имя клиента, password - пароль, fname - имя, sname - фамилия, email - адрес email, address - адрес, phone_number - номер телефона.

2.1.2 Таблица Staff

В таблице содержится информация о сотруднике. Таблица имеет поля:

id - первичный ключ, name - имя клиента, password - пароль, type - тип, fname - имя, sname - фамилия.

2.1.3 Таблица Items

В таблице содержится информация о товарах. Таблица имеет поля:

id - первичны ключ, name - имя, price - цена, description - описание.

2.1.4 Таблица Cart

В таблице содержится информация о корзине товаров. Таблица имеет поля:

id - первичный ключ, client - внешний ключ, current - является ли корзина текущей.

2.1.5 Таблица Items_on_cart

В таблице содержится информация о товарах содержащихся в корзине товаров. Таблица имеет поля:

id - первичный ключ, items_id - внешний ключ - товар, cart_id - внешний ключ - корзина.

2.2 Клиентская часть

2.2.1 Главная страница

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

2.2.2 Корзина

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

2.2.3 Регистрация пользователя

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

2.3 Описание классов и файлов программы

2.3.1 Класс DataBaseConnect

Класс для установки подключения к базе данных и выполнения запросов SQL

Класс имеет 1 статическое поле для хранения подключения к БД.

Класс реализует следующие методы:

2.3.1.1 setDataBaseConnect - Метод для установки нового пдключения к базе данных, путем содания нового объекта класса PDO

2.3.1.2 select - Метод для выполнения запросов на выборку данных из БД. Если подключение не было установленно ранее устанавливает его. Метод принимает два параметра: строку SQL-запроса и не обязательный массив неименованных параметров запроса. Метод возвращает выбранные строки в виде массива объектов. В случае ошибки возвращается значение false.

2.3.1.3 insertOrUpdate - Метод для выполнения запросов на вставку или обновление данных в БД. Если подключение не было установленно ранее устанавливает его.

Метод принимает два параметра: строку SQL запроса и массив неименованных параметров запроса.

2.3.1.4 delete - Метод для удаления данных в БД. Если подключение не было установленно ранее устанавливает его. Метод принимает два параметра: строку SQL запроса и не обязательный массив неименованных параметров.

2.3.1.5 getLastId - Метод получения значения первичного ключа из вставленных объектов.

2.3.2 Класс Cart

Класс для организации работы корзины.

Класс реализует следующие методы:

2.3.2.1 addNewCart - Метод создания новой корзины для покупок. Возвращает идентификатор созданной корзины.

2.3.2.2 addNewItem - метод добавления товара в текущую корзину покупок. Возвращает идентификатор созданного товара.

2.3.2.3 loadCurrentCart - Метод получения из базы данных текущей корзины. Возвращает объект - данные о текущей корзине.

2.3.2.4 cartItemsCount - Метод получения числа элементов в корзине. Возвращает число элементов в корзине.

2.3.2.5 removeCart - Метод удаления корзины из БД. Принимает идентификатор корзины.

2.3.2.6 loadItemsFromCart - Делает корзину неактивной после совершения покупки.

2.3.2.7 deleteItemsFromCart - Метод удаления товаров из корзины. Принимает массив идентификаторов товаров.

2.3.2.8 addItemsOnCart - Метод добавления товаров в корзину. Если текущей корзины нет, создает новую корзину. Принимает массив с идентификаторами товаров.

2.3.2.9.commitCart - Метод подтверждения заказа корзины.

2.3.3 Класс Registration

Класс реализует возможность регистрироваться на сайте.

В классе реализованы следующие методы:

2.3.3.1 userRegistration - Метод добавления нового пользователя. Прежде чем добавить, проверяет, не занято-ли введенное имя. Возвращает будевы значения в случае успеха или неудачи.

2.3.3.2 managerRegistration - Метод добавления нового менеджера. Прежде чем добавить, проверяет, не занято-ли введенное имя. Возвращает будевы значения в случае успеха или неудачи.

2.3.3.3 supervisorRegistration - Метод добавления супервизоров. Прежде чем добавить, проверяет, не занято-ли введенное имя. Возвращает будевы значения в случае успеха или неудачи.

2.3.3.4 deleteManager - Метод удаления менеджера из БД. Принимает идентификатор менеджера.

2.3.3.5 selectManagers - Метод получения прокси списка менеджеров. В случае ошибки возвращается значение false.

2.3.3.6 selectManager - Метод выбора менеджера. Принимает идентификатор менеджера. В случае ошибки возвращается значение false.

2.3.3.7 updateManagerWithPassword - Метод обновления данных менеджера.

2.3.4 Класс Auth

Класс для реализации аутентификации пользователей.

В классе реализованы следующие методы:

2.3.4.1 isAuth - Проверяет наличие пользователя с заданным логином, если информация совпадает, то сессия возвращает true, если не совпадает, то возвращает false.

2.3.4.2 authentification - Обрабатывает POST и GET запросы на вход и выход из системы. Обрабатывает запрос на вход и выход из системы (логин пользователя). Если запрос верен, то возвращается true, если не верен, то возвращается false.

2.3.4.3 isAuthStaff - Проверяет наличие персонала с заданным логином, если информация совпадает, то сессия возвращает true, если не совпадает, возвращается false.

2.3.4.4 authentificationStaff - Обрабатывает POST и GET запросы на вход и выход из системы администратора. Обрабатывает запрос на вход и выход из системы (логин персонала). Если запрос верен, то возвращается true, если не верен, то возвращается false.

2.3.5 Описание файлов:

2.3.5.1 Папка pattern

В данной папке содержатся файлы шаблонов.

2.3.5.2 index. php - Основные точки входа в систему. В части магазина сначала проводится авторизация, а затем обрабатываются GET запросы с подстановкой необходимых шаблонов. В административной части по идентичной схеме работает admin. php. Форум же после проверки авторизации использует автоматический вызов контроллеров у Классов-сущностей.

2.3.5.3 finder. js - При нажатии на кнопку с идентификатором finder, у блока идентификатором new_message CSS свойству display присваивается значение block. При щелчке на кнопку с идентификатором finder_close, у блока с идентификатором new_message CSS свойству display присваивается значение none. Таким образом реализован показ окна нового сообщения.

Приложение A. Исходный код

А.1. Класс DataBaseConnect

<? php

class DataBaseConnect {

static public $dbc;

const DATA_BASE_TYPE = "mysql";

const USER = "lesha";

const PASSWORD = "password";

const HOST = "localhost";

const DATA_BASE = "s_shop";

static public function setDataBaseConnect ($user, $password, $host, $dataBase) {

self:: $dbc=newPDO (self:: DATA_BASE_TYPE. ": host=$host; dbname=$dataBase;

charset=utf8",$user, $password);

}

static public function select ($sqlString, $params = array ()) {

if (! isset (self:: $dbc)) {

self:: setDataBaseConnect (self:: USER,self:: PASSWORD,self:: HOST,self:: DATA_BASE);

}

try {

$statment = self:: $dbc->prepare ($sqlString);

$statment->execute ($params);

$statment->setFetchMode (PDO:: FETCH_OBJ);

$resultObjArray = array ();

while ($obj = $statment->fetch ()) {

$resultObjArray [] = $obj;

}

return $resultObjArray;

} catch (PDOException $exc) {

return false;

// throw new Exception ('SELECT ERROR');

}

}

static public function insertOrUpdate ($sqlString, $params) {

if (! isset (self:: $dbc)) {

self:: setDataBaseConnect (self:: USER,self:: PASSWORD,elf:: HOST,self:: DATA_BASE);

}

try{

$statment = self:: $dbc->prepare ($sqlString);

$statment->execute ($params);

return true;

} catch (PDOException $exc) {

return false;

// throw new Exception ('INSERT OR UPDATE ERROR');

}

}

static public function delete ($sqlString, $paramsArray) {

if (! isset (self:: $dbc)) {

self:: setDataBaseConnect (self:: USER,self:: PASSWORD,self:: HOST,self:: DATA_BASE);

}

try {

$statment = self:: $dbc->prepare ($sqlString);

$statment->execute ($paramsArray);

return true;

}

catch (PDOException $exc) {

return false;

// throw new Exception ('DELETE ERROR');

}

}

static public function getLastId () {

return self:: $dbc->lastInsertId ();

}

}

? >? >

A.2. Класс Auth.

<? php

class Auth{

private $user;

private $password;

const SELECT_USER = "SELECT id, name, password FROM clients WHERE name =? AND password =?";

const SELECT_MANAGER = "SELECT id, name, password, type FROM staff WHERE name =? AND password =?";

static public function isAuth ($user, $password) {

$password = md5 ($password);

$result = DataBaseConnect:: select (self:: SELECT_USER, array ($user, $password));

if (count ($result) == 1) {

$_SESSION ['user'] = $result [0] - >name;

$_SESSION ['id'] = $result [0] - >id;

$_SESSION ['auth'] = true;

return true;

}

else return false;

}

static public function authentification () {

if (isset ($_GET ["logout"])) {

unset ($_SESSION ["user"], $_SESSION ["id"], $_SESSION ["auth"]);

}

if (isset ($_POST ["auth"])) {

if ($_POST ["auth"] == true) {

self:: isAuth ($_POST ["login"], $_POST ["password"]);

unset ($_POST ["auth"], $_POST ["login"], $_POST ["password"]);

}

}

}

static public function isAuthStaff ($user, $password) {

$password = md5 ($password);

$result = DataBaseConnect:: select (self:: SELECT_MANAGER, array ($user, $password));

if (count ($result) == 1) {

$_SESSION ['userM'] = $result [0] - >name;

$_SESSION ['idM'] = $result [0] - >id;

$_SESSION ['typeM'] = $result [0] - >type;

$_SESSION ['authM'] = true;

return true;

}

else return false;

}

static public function authentificationStaff () {

if (isset ($_GET ["logoutM"])) {

unset ($_SESSION ["userM"],$_SESSION ["idM"],$_SESSION ["authM"],$_SESSION ["typeM"]);

}

if (isset ($_POST ["authM"])) {

if ($_POST ["authM"] == true) {

self:: isAuthStaff ($_POST ["loginM"], $_POST ["passwordM"]);

unset ($_POST ["authM"], $_POST ["loginM"], $_POST ["passwordM"]);

}

}

}

}

? >

A.3. Класс Cart.

<? php

class Cart {

private $currantCart;

const NEW_CART = "INSERT INTO `s_shop`. `cart` (`id`, `client`, `current`) VALUES (NULL,?, '1')";

const LOAD_CURRENT_CART = "SELECT id FROM cart WHERE client =? AND current = 1";

const DISABLE_CART = "UPDATE `s_shop`. `cart` SET current = '0' WHERE id =?";

const LOAD_ITEMS_FROM_CART = "SELECT items_on_cart. id AS id, name, price, description, img_url FROM items, items_on_cart WHERE cart_id =? AND item_id = items. id";

const ADD_ITEM_ON_CART = "INSERT INTO `s_shop`. `items_on_cart` (`item_id`, `cart_id`, `id`) VALUES (?,?, NULL)";

const REMOVE_CART_ITEMS = "DELETE FROM items_on_cart WHERE cart_id =?";

const REMOVE_CART = "DELETE FROM cart WHERE id =?";

const REMOVE_ITEM_FROM_CART = "DELETE FROM items_on_cart WHERE id =?";

const CART_TO_COMMIT = "INSERT INTO commits (client, address, date, commit, cart, total_cost) VALUES (?,?,?, 0,?,?)";

public function addNewCart () {

DataBaseConnect:: insertOrUpdate (self:: NEW_CART, array ($_SESSION ['id']));

return DataBaseConnect:: getLastId ();

}

public static function addToCart ($item_id) {

$currentCart = self:: loadCurrentCart ();

if ($currentCart == false) {

$currentCart = self:: addNewCart ();

}

DataBaseConnect:: insertOrUpdate (self:: ADD_ITEM_ON_CART, array ($item_id, $currentCart));

}

public static function loadCurrentCart () {

$result = DataBaseConnect:: select (self:: LOAD_CURRENT_CART, array ($_SESSION ['id']));

if (count ($result)! = 0) {

return $result [0] - >id;

}

return false;

}

public static function cartItemsCount () {

$cart = self:: loadCurrentCart ();

if ($cart! = false) {

$result = DataBaseConnect:: select (self:: LOAD_ITEMS_FROM_CART, array ($cart));

$count = count ($result);

if ($count! = 0) {

return $count;

}

return false;

}

return false;

}

public static function removeCart ($cart_id) {

DataBaseConnect:: delete (self:: REMOVE_CART_ITEMS, array ($cart_id));

DataBaseConnect:: delete (self:: REMOVE_CART, array ($cart_id));

}

public static function disabledCart ($cart_id) {

DataBaseConnect:: insertOrUpdate (self:: DISABLE_CART, array ($cart_id));

}

public static function loadItemsFromCart () {

$cart = self:: loadCurrentCart ();

if ($cart! = false) {

$result = DataBaseConnect:: select (self:: LOAD_ITEMS_FROM_CART, array ($cart));

$count = count ($result);

if ($count! = 0) {

return $result;

}

return false;

}

return false;

}

public static function deleteItemsFromCart ($items_id_array) {

foreach ($items_id_array as $temp) {

DataBaseConnect:: delete (self:: REMOVE_ITEM_FROM_CART, array ($temp));

}

}

public static function addItemsOnCart ($items_id_array) {

$currentCart = self:: loadCurrentCart ();

if ($currentCart == false) {

$currentCart = self:: addNewCart ();

}

foreach ($items_id_array as $temp) {

DataBaseConnect:: insertOrUpdate (self:: ADD_ITEM_ON_CART, array ($temp, $currentCart));

}

}

public static function commitCart ($address, $totalCoast) {

$currentCart = self:: loadCurrentCart ();

if ($currentCart! = false) {

$date = date ("Y-m-d H: i: s");

DataBaseConnect:: insertOrUpdate (self:: CART_TO_COMMIT, array ($_SESSION ['id'], $address, $date, $currentCart, $totalCoast));

self:: disabledCart ($currentCart);

}

}

}

? >

A.4. Класс Items.

<? php

class Items {

const SET_ITEM = "INSERT INTO items (name, price, description, img_url) VALUES (?,?,?,?)";

const SELECT_EDITABLE_ITEM = "SELECT * FROM items WHERE id =?";

const SELECT_ALL_ITEMS = "SELECT * FROM items";

const UPDATE_ITEM = "UPDATE items SET name =?, price =?, description =?, img_url =? WHERE id =?";

// const NEW_ITEM = "INSERT INTO items (name, price, description, img_url) VALUES (?,?,?,?)";

public static function setItem ($name, $price, $description, $img_url) {

DataBaseConnect:: insertOrUpdate (self:: SET_ITEM, array ($name, $price, $description, $img_url));

}

public static function selectEditableItem ($id) {

$proxy = DataBaseConnect:: select (self:: SELECT_EDITABLE_ITEM, array ($id));

if (count ($proxy) > 0) {

return $proxy [0];

}

else return false;

}

public static function selectItems () {

$proxy = DataBaseConnect:: select (self:: SELECT_ALL_ITEMS);

return $proxy;

}

public static function updateItem ($id, $name, $price, $description, $img_url) {

DataBaseConnect:: insertOrUpdate (self:: UPDATE_ITEM, array ($name, $price, $description, $img_url, $id));

}

}

? >

A.5. Класс Registration.

<? php

class Registration {

const NEW_USER = "INSERT INTO clients (name, password, fname, sname, email, address, phone_number) VALUES (?,?,?,?,?,?,?)";

const SELECT_USER_NAMES = "SELECT name FROM clients WHERE name =?";

const NEW_MANAGER = "INSERT INTO staff (name, password, type, fname, sname) VALUES (?,?, 'manager',?,?)";

const NEW_SUPERVISER = "INSERT INTO staff (name, password, type, fname, sname) VALUES (?,?, 'superviser',?,?)";

const SELECT_STAFF_NAMES = "SELECT name FROM staff WHERE name =?";

const DELETE_MANAGER = "DELETE FROM staff WHERE id =? AND type = 'manager'";

const SELECT_MANAGERS = "SELECT * FROM staff WHERE type = 'manager'";

const SELECT_MANAGER = "SELECT * FROM staff WHERE type = 'manager' AND id =?";

const UPDATE_MANAGER_WITOUT_PASSWORD = "UPDATE staff SET name =?, fname=?, sname =? WHERE id =? AND type = 'manager'";

const UPDATE_MANAGER_WITH_PASSWORD = "UPDATE staff SET name =?, password =?, fname=?, sname =? WHERE id =? AND type = 'manager'";

static public function userRegistration ($name, $password, $fname, $sname, $email, $address, $phone_number) {

$result = DataBaseConnect:: select (self:: SELECT_USER_NAMES, array ($name));

if (count ($result) > 0) {

return false;

}

DataBaseConnect:: insertOrUpdate (self:: NEW_USER, array ($name, md5 ($password), $fname, $sname, $email, $address, $phone_number));

return true;

}

static public function managerRegistration ($name, $password, $fname, $sname) {

$result = DataBaseConnect:: select (self:: SELECT_STAFF_NAMES, array ($name));

if (count ($result) > 0) {

return false;

}

DataBaseConnect:: insertOrUpdate (self:: NEW_MANAGER, array ($name, md5 ($password), $fname, $sname));

return true;

}

static public function supervisorRegistration ($name, $password, $fname, $sname) {

$result = DataBaseConnect:: select (self:: SELECT_STAFF_NAMES, array ($name));

if (count ($result) > 0) {

return false;

}

DataBaseConnect:: insertOrUpdate (self:: NEW_SUPERVISER, array ($name, md5 ($password), $fname, $sname));

return true;

}

static public function deleteManager ($id) {

DataBaseConnect:: delete (self:: DELETE_MANAGER, array ($id));

}

static public function selectManagers () {

return DataBaseConnect:: select (self:: SELECT_MANAGERS);

}

static public function selectManager ($id) {

$result = DataBaseConnect:: select (self:: SELECT_MANAGER, array ($id));

return $result [0];

}

static public function updateManagerWithoutPassword ($id, $name, $fname, $sname) {

DataBaseConnect:: insertOrUpdate (self:: UPDATE_MANAGER_WITOUT_PASSWORD, array ($name, $fname, $sname, $id));

}

static public function updateManagerWithPassword ($id, $name, $password, $fname, $sname) {

DataBaseConnect:: insertOrUpdate (self:: UPDATE_MANAGER_WITH_PASSWORD, array ($name, $password, $fname, $sname, $id));

}

}

? >

A.6. Файл index.

<? php

session_start ();

spl_autoload_register ();

Auth:: authentification ();

ob_start ();

require_once ("pattern/authBlock. php");

$authContent = ob_get_clean ();

// Блок корзины

if ($_POST ['delete_cart_items']) {

if (count ($_POST ['cheked_items']) > 0) {

Cart:: deleteItemsFromCart ($_POST ['cheked_items']);

}

}

if ($_POST ['add_to_cart']) {

if (count ($_POST ['cheked_items']) > 0) {

Cart:: addItemsOnCart ($_POST ['cheked_items']);

}

}

if ($_POST ['bye_cart_items']) {

Cart:: commitCart ($_POST ['address'], $_POST ['total']);

}

// Конец блока корзины

// Начало блока регистрации

$regres = "";

if (! $_SESSION ['auth']) {

if ($_POST ['new_user']) {

$reg=Registration:: userRegistration ($_POST ['name'],$_POST ['password'],$_POST ['fname'], $_POST ['sname'], $_POST ['email'], $_POST ['address'], $_POST ['phone_number']);

if ($reg) {

$regres = "Registration SUCESFULL";

}

else {

$regres = "This USERNAME is not available";

}

}

}

// Конец блока регистрации

if (isset ($_GET ['cart'])) {

ob_start ();

if (! $_SESSION ['auth']) {

$items = SShop:: getItems ();

require_once ("pattern/items. php");

}

else {

$items = Cart:: loadItemsFromCart ();

require_once ("pattern/cart. php");

}

$content = ob_get_clean ();

} else if (isset ($_GET ['registration'])) {

ob_start ();

if (! $_SESSION ['auth']) {

require_once ("pattern/registration. php");

}

else {

$items = SShop:: getItems ();

require_once ("pattern/items. php");

}

$content = ob_get_clean ();

}

else {

$items = SShop:: getItems ();

ob_start ();

require_once ("pattern/items. php");

$content = ob_get_clean ();

}

require_once ("pattern/pattern. php");

? >

A.7. Файл auth Block/Pattern.

<form action="index. php" method="post">

<? php if ($_SESSION ['auth']! = true) {? >

Login: <input name="login" type="text" />

Password: <input name="password" type="text" />

<button type="submit" name="auth" value="true" >Send</button><br />

<br />

HELLO: <strong>GUEST! </strong><br />

Dont have account? <a href=". /? registration=true">registration</a>

<? php echo $regres;? >

<? php } else {? >

<a href=". /? logout=true">log out</a>

<br />

HELLO: <strong><? php echo $_SESSION ['user'];? ></strong>

<? php }? >

</form>

A.8. Файл cart/Pattern.

<form method="POST" action=". /? cart=true">

<table>

<tr class="header">

<td id="img">Picture</td><td>Name</td><td>Description</td><td>Price</td><? php if ($_SESSION ['auth']) {? ><td></td><? php }? >

</tr>

<? php

$total = 0;

if ($items! = false) {

foreach ($items as $item) {

? >

<tr>

<td><img width="128" height="128" src="<? php echo $item->img_url;? >" /></td><td><? php echo $item->name;? ></td><td><? php echo $item->description;? ></td><td>$<? php echo $item->price;? ></td><td><input type="checkbox" name="cheked_items [] " value="<? php echo $item->id;? >" /></td>

</tr>

<? php

$total = $total + (int) $item->price;

}

}

? >

<? php

? >

</table>

<input type="hidden" name="total" value="<? php echo $total;? >" />

<? php echo "Total coast: $". $total;? >

<br />Payment info: <input style="width: 100%; " type="text" placeholder="Your address" name="address" />

<button name="delete_cart_items" type="submit" value="true">Delete</button>

<button name="bye_cart_items" type="submit" value="true">Buy</button>

</form>

A.9. Файл items/Pattern.

<form method="POST" action=". /">

<? php if ($_SESSION ['auth']) {? ><button type="submit" value="true" name="add_to_cart">add to cart</button><? php }? >

<table>

<tr class="header">

<td id="img">Picture</td><td>Name</td><td>Description</td><td>Price</td><? php if ($_SESSION ['auth']) {? ><td></td><? php }? >

</tr>

<? php

foreach ($items as $item) {

? >

<tr>

<td><img width="128" height="128" src="<? php echo $item->img_url;? >" /></td><td><? php echo $item->name;? ></td><td><? php echo $item->description;? ></td><td>$<? php echo $item->price;? ></td><? php if ($_SESSION ['auth']) {? ><td><input type="checkbox" name="cheked_items [] " value="<? php echo $item->id;? >" /></td><? php }? >

</tr>

<? php

}

? >

<? php

? >

</table>

</form>

A.10. Файл patters/Pattern.

<! DOCTYPE HTML>

<html>

<head>

<link href="pattern/style. css" rel="stylesheet" type="text/css" />

<title>

Tolbin's

</title>

</head>

<body>

<div id="header">

<a href=". /"><h1>Tolbin's MMMMMSHOP</h1></a>

<h2>Your paradise, my problem. </h2>

<? php

echo $authContent;

? >

</div>

<div id="central">

<div id="menu">

<ul>

<li>

<a href=". /"><span>Main Stock</span></a>

</li>

<? php if ($_SESSION ['auth'] == true) {? >

<li>

<a href=". /? cart=true"><span>Shop Cart (<? php

$count = Cart:: cartItemsCount ();

if ($count == false) {

$count = 0;

}

echo $count;

? >)

</span>

</a>

</li>

<? php }? >

<? php if ($_SESSION ['authM'] == true) {? >

<li>

<a href=". /admin. php"><span>Admin</span></a>

</li>

<li>

<a href=". /admin. php? commits=true"><span>Commits</span></a>

</li>

<li>

<a href=". /admin. php? commitsold=true"><span>CommitSold</span></a>

</li>

<? php if (strcasecmp ($_SESSION ['typeM'], 'supervisor') == 0) {? >

<li>

<a href=". /admin. php? itemsList=true"><span>Items List</span></a>

</li>

<li>

<a href=". /admin. php? newItem=true"><span>New Item</span></a>

</li>

<li>

<a href=". /admin. php? managerList=true"><span>Manager List</span></a>

</li>

<li>

<a href=". /admin. php? managerNew=true"><span>New Manager</span></a>

</li>

<? php }? >

<? php }? >

</ul>

</div>

<div id="content">

<? php echo $content;? >

</div>

</div>

</body>

</html>

A.11. Файл registration/Pattern.

<form class="reg" method="POST" action=". /">

<style>

. reg input [type=text] {

width: 100%;

}

</style>

<input type="text" placeholder="Your login" name="name" />

<input type="text" placeholder="Your password" name="password" />

<input type="text" placeholder="Your e-mail" name="email" />

<input type="text" placeholder="Your firstname" name="fname" />

<input type="text" placeholder="Your secondname" name="sname" />

<input type="text" placeholder="Your address" name="address" />

<input type="text" placeholder="Your phone number" name="phone_number" />

<button type="submit" name="new_user" value="true">registration</button>

</form>

A.12. Файл style/Pattern.

body {

margin: 0;

padding: 0;

background: #333;

}

#central {

width: 1024px;

background-color: #fff;

margin: 50px auto;

position: relative;

}

#central #menu {

position: absolute;

top: - 50px;

width: 1024px;

background-color: #333;

height: 50px;

}

#central #menu ul{

display: inline-block;

margin: 0;

padding: 0;

}

#central #menu ul li {

display: block;

float: left;

margin: 10px;

}

#central #menu ul li: hover{

background-color: #fff;

}

#central #menu ul li span {

display: block;

width: 100%;

padding: 10px;

}

#central #menu ul li a {

text-decoration: none;

font-weight: bold;

color: #fff;

}

#central #menu ul li a: hover {

color: #a00;

}

#header {

background-color: #fff;

width: 100%;

position: relative;

padding-bottom: 25px;

}

#header h1 {

margin: 10px;

color: #a00;

text-decoration: none;

}

#header a h1 {

text-decoration: none;

color: #a00;

}

#content {

width: 964px;

padding: 30px;

}

#content table {

border: 2px solid #333;

width: 100%;

}

#content table td {

border: 1px solid #333;

vertical-align: middle;

}

#content table #img {

width: 128px;

}

#content table tr. header{

text-align: center;

}

#content button {

width: 100%;

background: #000;

color: #fff;

}

Приложение Б. Снимки страниц

Рисунок 1 - Главная страница

Рисунок 2 - Страница регистрации

Размещено на Allbest.ru


Подобные документы

  • Преимущества и недостатки электронной коммерции. Описание локального сервера Denwer. Структура файлов и папок. Особенности PHP, MySQL, CSS, HTML. Разработка структуры сайта интернет-магазина по продажи гитар и комплектующих, его программная реализация.

    курсовая работа [5,0 M], добавлен 25.10.2014

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

    дипломная работа [1,7 M], добавлен 08.06.2013

  • Описание программного обеспечения для разработки Интернет-магазина. Установка программы WYSIWYG Web Builder v3.2.0. Создание структурного макета Интернет-магазина. Проектирование главной страницы с перечнем товарных наименований (на примере TV.html).

    курсовая работа [4,0 M], добавлен 30.11.2011

  • Постановка задач и функционал сайта, его внешняя структура. Главная страница интернет-магазина. Классы для работы с таблицами. Основное назначение диаграммы прецедентов. Модель сущность - связь. Главная страница админпанели, руководство пользователя.

    курсовая работа [2,3 M], добавлен 07.05.2015

  • Проведение формализации и стандартизации данных и задач, являющихся необходимыми для этапов разработки прототипа Интернет-магазина. Тестирование и отладка программного обеспечения. Инструкция пользователя, алгоритм программы. Затраты на ее разработку.

    дипломная работа [2,0 M], добавлен 30.06.2014

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

    отчет по практике [2,9 M], добавлен 01.05.2015

  • Инструментальные средства разработки сайта. Таблицы базы данных, их описание. Общие принципы разработки программного продукта. Структура программного продукта клиента. Страница информации о пользователе и его заказов, информационная безопасность.

    дипломная работа [3,5 M], добавлен 14.06.2012

  • Обзор принципов построения информационных систем для торговли через интернет. Сравнительная характеристика программных средств построения электронного магазина. Проектирование и программная реализация интернет–магазина. Экономическое обоснование проекта.

    дипломная работа [2,5 M], добавлен 13.02.2006

  • База данных, физическая и логическая схема. Функционал сайта: главная страница, регистрация, просмотр списка и описания товаров, отправка в корзину. Выполненные заказы, статистика, панель администратора. Права доступа, пример реализации (личный кабинет).

    курсовая работа [3,3 M], добавлен 30.09.2013

  • Обзор программного обеспечения электронного магазина, использование языка программирования VbScript. Модельная и физическая структура, разработка регистрационной формы Web-сайта, подключение его к базе данных. Особенности создания страницы пользователя.

    курсовая работа [2,2 M], добавлен 03.04.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.