Создание интернет-магазина с форумом и административной частью
Разработка и написание программного обеспечения для интернет-магазина по продаже свежих овощей в режиме "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