Интерактивное Web-приложение системы внутриплатформенной оплаты товара

Чем отличается web-сайт от web-приложения. Технологии для создания интерактивного веб-приложения. Основные достоинства Apache. Автоматическое извлечение POST и GET-параметров. Взаимодействие с большим количеством систем управления базами данных.

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

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

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

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

Оглавление

Введение

Глава 1. Выбор технологий

Глава 2. СУБД

Глава 3. Создание серверной части приложения

Глава 4. Java-script

Заключение

Список литературы

Приложение 1. Листинги страниц и скриптов

Приложение 2. БД

Приложение 3. Java-скрипт

Введение

Интерактивное Web-приложение.

В нашем мире iPad-ов, iPhone-ов, Android-ов и устройств, сфокусированных на приложениях, уже несовременно использовать статический веб-сайт. Если нет механизма для сложного поиска, хотя бы трех способов оплаты покупок и пары страниц с хитрыми Ajax-взаимодействиями,то такой сайт могут назвать «застрявшим в 1990-ых».

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

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

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

Цели и задачи:

1. Создать интерактивное приложение интернет магазина по продаже компьютерных игр (ключей).

2. Контент приложения должен выводится из БД.

3. Создать внутрисистемную систему оплаты интернет-магазина, по аналогу с сервисом Steam.

4. Приложение должно отвечать требованиям современного дизайна, верстки, юзабилити.

Глава 1. Выбор технологий

В этой главе обосновывается выбор, какие технологии для создания интерактивного веб-приложения.

1. Серверная ОС

В качестве сервера был выбран ОС Debian на базе Unix, т.к. 67,6% всех серверов в мире используют системы на базе Unix; OC Debian используется на 35% мировых серверов, в то время, как Windows сервер используется только на 33,6% машин.

Кроме того, основными преимуществами Debian по сравнению с Windows являются:

· cтабильность;

· большое количество пакетов;

· свободное программное обеспечение;

· множество поддерживаемых архитектур;

· легкость в настройке;

· бесплатен.

2. HTTP(Web) - сервер

Apache, так же по статистике является самым популярным HTTP сервером и занимает долю в размере 65,4%, в то время, как Microsoft-IIS всего 15%.

Основными достоинствами Apache считаются надёжность и гибкость конфигурации. Он позволяет подключать внешние модули для предоставления данных, использовать СУБД для аутентификации пользователей, модифицировать сообщения об ошибках и т. д. Поддерживает IPv6.Так же бесплатен (Свободное ПО).

3. СУБД - MySQL

MySQL -- свободная реляционная система управления базами данных. Разработку и поддержку MySQL осуществляет корпорация Oracle, получившая права на торговую марку вместе с поглощённой Sun Microsystems, которая ранее приобрела шведскую компанию MySQL AB. Продукт распространяется как под GNU General Public License, так и под собственной коммерческой лицензией. Помимо этого, разработчики создают функциональность по заказу лицензионных пользователей. Именно благодаря такому заказу почти в самых ранних версиях появился механизм репликации.

Исторически MySQL развивался именно как база для web, где режим работы довольно специфичен - подавляющее число запросов это простые SELECT из больших баз, от множества пользователей, обновлений и вставок мало, хранимые процедуры, триггеры и т.п. - тоже редко используются. Поэтому не смотря на то, что MySQL не является самым оптимальным вариантом СУБД, как, например MS SQL, он однозначно более всего подходит именно для создания веб-приложений простого и среднего уровня, где нет необходимости работать с очень большими объемами данных или пользоваться расширенным функционалом.

В итоге кросс-платформенность, открытая лицензия и простота использования делает MySQL самой популярной СУБД для создания средних интерактивных web-приложений.

4. Язык разработки web-приложения. - PHP.

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

В области веб-программирования, в частности серверная часть, PHP -- один из популярных сценарных языков (наряду с JSP, Perl и языками, используемыми в ASP.NET).

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

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

· автоматическое извлечение POST и GET-параметров, а также переменных окружения веб-сервера в предопределённые массивы;

· взаимодействие с большим количеством различных систем управления базами данных (MySQL, MySQLi, SQLite, PostgreSQL, Oracle (OCI8), Oracle, Microsoft SQL Server, Sybase, ODBC, mSQL, IBM DB2, Cloudscape и Apache Derby, Informix, Ovrimos SQL, Lotus Notes, DB++, DBM, dBase, DBX, FrontBase, FilePro, Ingres II, SESAM, Firebird / InterBase, Paradox File Access, MaxDB, Интерфейс PDO);

· автоматизированная отправка HTTP-заголовков;

· работа с HTTP-авторизацией;

· работа с cookies и сессиями;

· работа с локальными и удалёнными файлами, сокетами;

· обработка файлов, загружаемых на сервер;

· работа с XForms.

В настоящее время PHP используется сотнями тысяч разработчиков. Согласно рейтингу корпорации TIOBE, базирующемся на данных поисковых систем, в июне 2013 года PHP находился на 5 месте среди языков программирования. К крупнейшим сайтам, использующим PHP, относятся Facebook, Wikipedia и др.

Входит в LAMP -- распространённый набор программного обеспечения для создания и хостинга веб-сайтов (Linux, Apache, MySQL, PHP).

5. Дополнительный софт для разработки интерактивного веб-приложения:

5.1 Artisteer

Artisteer - это программа для создания шаблонов сайтов популярных систем управления содержимым (CMS), таких как Joomla, Wordpress, Blogger, Drupal, DotNetNuke, кроме того с его помощью можно быстро создавать простые статические сайты с уникальным дизайном. Основные плюсы данного визуального редактора - простота и скорость создания шаблона, автоматическое создание карты сайта, пропись мета-тегов, генерация файлов .css, создание «резиновых» шаблонов, генерация ВАЛИДНОГО кода; т.е. шаблон созданый в Artisteer можно экспортировать в другие визуальные редакторы, такие как Dreamweaver. Очень мало подобных программ способно генерировать действительно валидный код.

5.2 Dreamweaver CC это визуальный HTML-редактор компании Adobe. , является эталоном визуальных редакторов, имеет встроенную подсветку синтаксиса языков программирования (в том числе html,java-script,php и т.д.), быстрое меню вставки элементов, возможности организации иерархической структуры.

база сайт приложение web

Глава 2. СУБД

MySQL с графическим интерфейсом phpmyadmin

Рисунок 1. Панель входа СУБД MySQL “phpmyadmin”

Рисунок 2. Стартовая панель управления СУБД MySQL “phpmyadmin”

Рассмотрим БД “mybase”.

Рисунок 3. Содержание базы данных “mybase”

Структура БД mybase состоит из трех таблиц:

В таблице users хранятся данные о пользователях системы, в неё включены поля id(int), login(логин, varchar), password(пароль, varchar),
fio(ФИО, varchar), email(электронная_почта, varchar), balance(баланс пользователя, int), где id является уникальным первичным ключом.

Рисунок 4 «Структура таблицы users»

В таблице stuff хранятся данные о товарах, в неё включены поля ids(id товара int), name(имя, varchar), description(описание, varchar), price(цена, varchar), где ids является уникальным, первичным ключом. (тип данных цены обусловлен возможным выводом в как в формате числа, так и в формате «xxx руб.» или «ххх уе.»)

Рисунок 5 «Структура таблицы “stuff”»

В таблице payments хранятся данные о платежах, в неё включены поля id_pay(id платежа) , id_client(id пользователя совершившего платеж), id_stuff( id купленного товара).

Рисунок 6 Структура таблицы “payments”

Целостность таблиц

Рисунок 7 Связи таблицы “payments”

Поля id_client и id_stuff являются вторичными ключами и соотносятся с первичными ключами соответствующих полей в таблицах users и stuff, правила внешних ключей - ON DELETE RESTRICT ON UPDATE RESTRICT, это запрещает удалять или обновлять записи таблицы, если в главной строчке есть соответствующий родитель. Это сделано для того, что бы запретить изменять таблицу платежей, ведь может возникнуть такой случай, когда товар или пользователь может удалится из системы и из-за этого возникнет путаница в истории платежей, которая поэтому должна быть независима от подобных действий.

Таким образом таблица payments имеет отношение к таблицам users и stuff как «один ко многим», и с наличием правил соотношения ключей образует оптимальную целостность таблиц web-приложения.

Глава 3. Создание серверной части приложения

Соединение с БД реализуется следующим скриптом:

Скрипт соединения с БД:

<?php

$db = mysql_connect ("localhost","Admin","Admin1");

mysql_select_db ("mybase",$db);

?>

Этот скрипт содержится в файле bd.php, который подключается на всех страницах, где требуется соединение с БД.

Связь с базой данных реализуется в нескольких страницах в различных скриптах:

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

SELECT id FROM users WHERE login='$login'

Запрос на сохранение пользовательских данных при регистрации:

INSERT INTO users (login,password,email,fio,balance)

VALUES('$login','$password','$email','$fio','$balance')

Запрос на изменение баланса при покупке товара:

"UPDATE users SET balance=".$bb." WHERE id=".$bid

Запрос на запись платежа в историю платежей:

"INSERT INTO payments VALUES(NULL, '$bs', '$bid')"

Запрос на получение информации о товарах:

SELECT * FROM stuff

Глава 4. Java-script

Джава-скрипты являются основными функциями обеспечивающими активность на стороне клиента, в то время как php скрипты обеспечивают активность на стороне сервера.

Пример Java-скрипта, реализующего выход:

код кнопки:

<button onclick='myWindow()'>Выйти</button>

код скрипта:

<script>

function myWindow() {

var w = window.open('exit.php', 'Выход')}

</script>

Функция скрипта открывает новую страницу (обработчик выхода) с заголовком «Выход».

Скрипт последнего изменения страницы shop.php

<script language=\"Javascript\">

<!--

document.write('данная страница изменялась:'+ document.lastModified + '<br>')

//-->

</script>

Заключение

Выполненные задачи:

· Создано интерактивное приложение интернет-магазина по продаже компьютерных игр(ключей)

· Создана внутрисайтовая система оплаты.

Приложение отвечает современным требованиям, является кросс-браузерным; макет является «резиновым», что позволяет взаимодействовать с приложением на устройствах с любым разрешением экрана, соблюдены все основные принципы юзабилити.

Выводы: Приложение было создано на базе комплекса LAMP (Linux-Apache-MySQL-PHP), и соответствует всем основным техническим и стилистическим требованиям, в дальнейшем, при соответствующей модернизации может быть внедрено как независимая система простого интернет-магазина или в качестве плагинов\базы для существующих систем. Система внутрисайтовой оплаты позволяет вести международную деятельность, т.к. API оплаты для разных регионов планеты подключается отдельно, в независимости от основной валюты, используемой для оплаты на сайте.

Список литературы

1. «PHP для начинающих», Джанет Валейд, 2005, изд. «Диалектика».

2. Дуванов А.А. Кухня Web-мастера Сидорова: основы практич. Web-дизайна. - М.: Чистые пруды, 2005. - 31 с.: ил. - (Б-ка «Первого сентября». Информатика; Вып. 4.).

3. Adobe Dreamweaver, CSS, Ajax и PHP - Дэвид Пауэрс,2009, БХВ-Петербург

4. Настольная книга администратора Debian: Debian Wheezy: от первого знакомства к мастерству, Рафаэль Херцог, 2013, Freexian SARL.

Приложение 1

Листинги страниц и скриптов

Структура проекта:

Рисунок 12 «Структура проекта»

Листинги страниц:

Index.php (главная):

<!DOCTYPE html>

<html dir="ltr" lang="en-US"><head><!-- Created by Sergey Ponomarev -->

<meta charset="utf-8">

<title>Home</title>

<meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">

<!--[if lt IE 9]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

<link rel="stylesheet" href="style.css" media="screen">

<!--[if lte IE 7]><link rel="stylesheet" href="style.ie7.css" media="screen" /><![endif]--><link rel="stylesheet" href="style.responsive.css" media="all">

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

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

<script src="script.responsive.js"></script>

<style>.art-content .art-postcontent-0 .layout-item-0 { padding-right: 10px;padding-left: 10px; }

.ie7 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

.ie6 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

</style>

</head>

<body>

<div id="art-main">

<nav class="art-nav">

<ul class="art-hmenu"><li><a href="index.html" >Главная</a><ul class="active"><li></li></ul></li>

<li><a href="registration.php">Регистрация</a></li>

<li><a href="shop.php">Магазин</a></li>

</ul>

</nav>

<div class="art-sheet clearfix">

<header class="art-header">

<div class="art-shapes">

</div>

<h1 class="art-headline" data-left="1.02%">

<a href="#">Курсовая Работа</a>

</h1>

</header>

<br>

<section id="table1">

<article id="mainauthor">Автор проекта - Сергей Пономарев </br></article>

</section>

<br>

<footer class="art-footer">

<p><a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p>

<p>Copyright © 2015. All Rights Reserved.</p>

</footer>

</div>

<p class="art-page-footer">

<span id="art-footnote-links">Web Template</a>created by Sergey Ponomarev</span>

</p>

</div>

</body></html>

Registration.php:

<!doctype html>

<html dir="ltr" lang="en-US"><head><!-- Created by Artisteer v4.1.0.60046 -->

<meta charset="utf-8">

<title>Home</title>

<meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">

<!--[if lt IE 9]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

<link rel="stylesheet" href="style.css" media="screen">

<!--[if lte IE 7]><link rel="stylesheet" href="style.ie7.css" media="screen" /><![endif]--><link rel="stylesheet" href="style.responsive.css" media="all">

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

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

<script src="script.responsive.js"></script>

<style>.art-content .art-postcontent-0 .layout-item-0 { padding-right: 10px;padding-left: 10px; }

.ie7 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

.ie6 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

</style>

</head>

<body>

<div id="art-main">

<nav class="art-nav">

<ul class="art-hmenu"><li><a href="index.html" >Главная</a><ul class="active"><li></li></ul></li>

<li><a href="registration.php">Регистрация</a></li>

<li><a href="shop.php" >Магазин</a></li>

</ul>

</nav>

<div class="art-sheet clearfix">

<header class="art-header">

<div class="art-shapes">

</div>

<h1 class="art-headline" data-left="1.02%">

<a href="#">Регистрация</a>

</h1>

</header>

<br>

<section id="table1">

<article id="mainauthor">Автор проекта - Сергей Пономарев <?php phpinfo() ?><br><? echo "test" ?>

</article>

</section>

<br>

</br>

<h3>Пройдите пожалуйста регистрацию</h3>

<br>

<section id="formsection">

<div id="formblock"><form action="save_user.php" method="post"><label>Введите желаемый логин:</label><input name="login" type="text" autofocus required id="login"></br>

<label>ФИО:</label><input name="fio" type="text" >

<br><label>Введите пароль</label>

<input name="password" type="password" required id="password"><br>

<label>Введите свой e-mail:</label><input name="email" type="text" >

<br>

<input type="submit">

<input type="reset">

</form></div>

</section>

<footer class="art-footer">

<p><a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p>

<p>Copyright © 2015. All Rights Reserved.</p>

</footer></div>

<p class="art-page-footer">

<span id="art-footnote-links">Web Template</a>created by Sergey Ponomarev</span>

</p>

</div>

</body></html>

Обработчик save_user.php

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Документ без названия</title>

</head>

<body>

<?php

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную

if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную

if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт

{exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");}

//вводим email и fio

$email=$_POST['email'];

$fio=$_POST['fio'];

//добавляем баланс

$balance=1000;

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

$login = stripslashes($login);

$login = htmlspecialchars($login);

$email=stripslashes($email);

$email=htmlspecialchars($email);

$fio=stripslashes($fio);

$email=htmlspecialchars($fio);

$password = stripslashes($password);

$password = htmlspecialchars($password);

//удаляем лишние пробелы

$login = trim($login);

$password = trim($password);

// подключаемся к базе

include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные

// проверка на существование пользователя с таким же логином

$result = mysql_query("SELECT id FROM users WHERE login='$login'",$db);

$myrow = mysql_fetch_array($result);

if (!empty($myrow['id'])) {

exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); }

// если такого нет, то сохраняем данные

$result2 = mysql_query ("INSERT INTO users (login,password,email,fio,balance) VALUES('$login','$password','$email','$fio','$balance')");

// Проверяем, есть ли ошибки

if ($result2=='TRUE')

{echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. <a href='index.html'>Главная страница</a>";}

else {echo "Ошибка! Вы не зарегистрированы.";

echo $result2;} ?>

</body>

</html>

Страница магазина shop.php

<?php

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

session_start();

?>

<!DOCTYPE html>

<html dir="ltr" lang="en-US"><head><!-- Created by Artisteer v4.1.0.60046 -->

<meta charset="utf-8">

<title>Home</title>

<meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">

<!--[if lt IE 9]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

<link rel="stylesheet" href="style.css" media="screen">

<!--[if lte IE 7]><link rel="stylesheet" href="style.ie7.css" media="screen" /><![endif]--><link rel="stylesheet" href="style.responsive.css" media="all">

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

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

<script src="script.responsive.js"></script>

<style>.art-content .art-postcontent-0 .layout-item-0 { padding-right: 10px;padding-left: 10px; }

.ie7 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

.ie6 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

</style>

</head>

<body>

<div id="art-main">

<nav class="art-nav">

<ul class="art-hmenu"><li><a href="index.html" >Главная</a><ul class="active"><li></li></ul></li>

<li><a href="registration.php">Регистрация</a></li>

<li><a href="shop.php" class="active">Магазин</a></li>

</ul>

</nav>

<div class="art-sheet clearfix">

<header class="art-header">

<div class="art-shapes">

</div>

<h1 class="art-headline" data-left="1.02%">

<a href="#">Интернет-Магазин</a>

</h1>

</header>

<br>

<section id="table1">

<article id="mainauthor">Автор проекта - Сергей Пономарев </br></article>

<?php phpinfo ?>

</section>

<br>

<?php

echo "<script language=\"Javascript\">

<!--

document.write('данная страница изменялась:'+ document.lastModified + '<br>')

//-->

</script>";

?>

<form method='post'>

<select name='s1'>

<?php

include('bd.php');

$query='SELECT * FROM stuff';

$result=mysql_query($query,$db);

while($myrow = mysql_fetch_array($result))

{echo "<option value=' ".$myrow['ids']." '>".$myrow['name']."</option>";}

echo "</select>";

?>

<input type='submit' >

</form>

<?php

include("bd.php");

mysql_query('SET NAMES UTF8');

$query="SELECT * FROM stuff WHERE ids=" . $_POST["s1"];

$bids=$_POST["s1"];

$result=mysql_query($query,$db);

while($myrow = mysql_fetch_array($result))

{echo "<br>". $myrow['description'] . "</br>";}

?>

<br>

<?php

include("bd.php");

mysql_query('SET NAMES UTF8');

$query="SELECT * FROM stuff WHERE ids=" . $_POST["s1"];

$result=mysql_query($query,$db);

while($myrow = mysql_fetch_array($result))

{echo "Цена:";

echo $myrow['price'] ;}

?>

<br>

<?php

// Проверяем, пусты ли переменные логина и id пользователя

if (empty($_SESSION['login']) or empty($_SESSION['id']))

{

// Если пусты, то мы не выводим ссылку

echo "Вы НЕ вошли<br>

<form action='testreg.php' method='post'>

<label>Введите Логин</label>

<input type='text' name='login'>

</br>

<label>Введите пароль</label>

<input type='password' name='password'>

<br>

<input type='submit'>

<br>

<input type='reset'>

</form>";}

else{

// Если не пусты, то мы выводим ссылку

echo "Вы вошли на сайт, как ".$_SESSION['login']."<br>

Страница магазина:<a href='shop.php'>Перейти</a><br>

<button onclick='myWindow()'>Выйти</button>

<script>

function myWindow() {

var w = window.open('exit.php', 'Выход')}

</script>";

echo"<h4>Ваш Баланс:</h4>";

mysql_query('SET NAMES UTF8');

$query="SELECT * FROM users WHERE id=" . $_SESSION['id'];

$result=mysql_query($query,$db);

while($myrow = mysql_fetch_array($result))

{$bb=$myrow['balance'];

echo $bb;

$_SESSION['balance']=$myrow['balance'];}

$_SESSION['ids']=$_POST['s1'];

if (!empty($_SESSION['ids']))

{echo "<br><br><h4><a href=buycart.php>Купить</a></h4>";}}

?>

<br>

<footer class="art-footer">

<p><a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p>

<p>Copyright &copy; 2015. All Rights Reserved.</p>

</footer>

</div>

<p class="art-page-footer"></p>

</div>

</body></html>

Обработчик проверки наличия пользователя в системе testreg.php
<?php

session_start();// вся процедура работает на сессиях. !

?>

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Документ без названия</title>

<?php

if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную

if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} }

//заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную

if (empty($login) or empty($password)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт

{exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!");}

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

$login = stripslashes($login);

$login = htmlspecialchars($login);

$password = stripslashes($password);

$password = htmlspecialchars($password);

//удаляем лишние пробелы

$login = trim($login);

$password = trim($password);

// подключаемся к базе

include ("bd.php");

$result = mysql_query("SELECT * FROM users WHERE login='$login'",$db); //извлекаем из базы все данные о пользователе с введенным логином

$myrow = mysql_fetch_array($result);

if (empty($myrow['password']))

{//если пользователя с введенным логином не существует

exit ("Извините, введённый вами login или пароль неверный.");}

else { //если существует, то сверяем пароли

if ($myrow['password']==$password) {

//если пароли совпадают, то запускаем пользователю сессию

$_SESSION['login']=$myrow['login'];

$_SESSION['id']=$myrow['id'];

$_SESSION['email']=$myrow['email'];

$_SESSION['fio']=$myrow['fio'];

//эти данные очень часто используются, вот их и будет "носить с собой" вошедший пользователь

echo "Вы успешно вошли на сайт! <a href='shop.php'>Магазин</a>"; }

else {//если пароли не сошлись

exit ("Извините, введённый вами login или пароль неверный.");} }

?>

</head>

<body>

</body>

</html>

Обработчик выхода exit.php

<?php

session_start();// вся процедура работает на сессиях. !

?>

<!doctype html>

<html>

<head>

<meta charset="utf-8">

<title>Документ без названия</title>

</head>

<body>

<?php

unset($login,$fio,$email);

session_destroy();

echo "Вы вышли";

echo"<a href='index.html'>Перейти на главную</a>";

?>

</body></html>

Страница корзины buycat.php

<?php

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

session_start();

?>

<!DOCTYPE html>

<html dir="ltr" lang="en-US"><head><!-- Created by Artisteer v4.1.0.60046 -->

<meta charset="utf-8">

<title>Home</title>

<meta name="viewport" content="initial-scale = 1.0, maximum-scale = 1.0, user-scalable = no, width = device-width">

<!--[if lt IE 9]><script src="https://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->

<link rel="stylesheet" href="style.css" media="screen">

<!--[if lte IE 7]><link rel="stylesheet" href="style.ie7.css" media="screen" /><![endif]--><link rel="stylesheet" href="style.responsive.css" media="all">

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

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

<script src="script.responsive.js"></script>

<style>.art-content .art-postcontent-0 .layout-item-0 { padding-right: 10px;padding-left: 10px; }

.ie7 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

.ie6 .art-post .art-layout-cell {border:none !important; padding:0 !important; }

</style>

</head>

<body>

<div id="art-main">

<nav class="art-nav">

<ul class="art-hmenu"><li><a href="index.html" >Главная</a><ul ><li></li></ul></li>

<li><a href="registration.php">Регистрация</a></li>

<li class="active"><a href="shop.php">Магазин</a></li>

</ul>

</nav>

<div class="art-sheet clearfix">

<header class="art-header">

<div class="art-shapes">

</div>

<h1 class="art-headline" data-left="1.02%">

<a href="#">Курсовая Работа</a>

</h1>

</header>

<br>

<section id="table1">Здесь располагается содержимое id "table1"

<article id="mainauthor">Автор проекта - Сергей Пономарев </br></article>

</section>

<?php

// Проверяем, пусты ли переменные логина и id пользователя

if (empty($_SESSION['login']) or empty($_SESSION['id'])){

// Если пусты, то мы не выводим ссылку

echo "Вы НЕ вошли<br>"; }

else

{ // Если не пусты, то:

echo "Вы вошли на сайт, как ".$_SESSION['login']."<br>

<br>Ваше ФИО:".$_SESSION['fio']."<br>

Ваш e-mail:".$_SESSION['email']."<br>

Ваш заказ:";

include("bd.php");

mysql_query('SET NAMES UTF8');

$query="SELECT * FROM stuff WHERE ids=" . $_SESSION['ids'];

$result=mysql_query($query,$db);

while($myrow = mysql_fetch_array($result))

{ echo $myrow['name'];

echo "<br><br>Цена:";

echo $myrow['price'] ;

$_SESSION['price']=$myrow['price'];}

echo "<br><br>";

echo"<h4>Ваш Баланс:</h4>";

echo $_SESSION['balance'];}

?><br>

<a href="buyscript.php">Купить!</a>

<br>

<table width="100%" border="0" cellspacing="5" cellpadding="5">

<tr>

<td>&nbsp;</td>

<td>&nbsp;</td>

</tr>

<tr>

<td>&nbsp;</td>

<td>&nbsp;</td>

</tr>

</table>

<br>

<footer class="art-footer">

<p><a href="#">Link1</a> | <a href="#">Link2</a> | <a href="#">Link3</a></p>

<p>Copyright © 2015. All Rights Reserved.</p>

</footer>

</div>

<p class="art-page-footer">

<span id="art-footnote-links">Web Template</a>created by Sergey Ponomarev</span>

</p></div></body></html>

Обработчик покупки buyscript.php

<!doctype html>

<?php

session_start();// вся процедура работает на сессиях. !

?><html>

<head>

<meta charset="utf-8">

<title>Документ без названия</title>

</head><body>

<?php

include("bd.php");

$bid=$_SESSION['id'];

$bs=$_SESSION['ids'];

$bp=$_SESSION['price'];

mysql_query('SET NAMES UTF8');

$query="SELECT * FROM users WHERE id=" . $_SESSION['id'];

$result=mysql_query($query);

while($myrow = mysql_fetch_array($result))

{$bb=$myrow['balance'];}

$bb=$bb-$_SESSION['price'];

echo "остаточный баланс на счету<br>";

echo $bb;

echo "<br>";

$sql="UPDATE users SET balance=".$bb." WHERE id=".$bid;

$result2 = mysql_query ($sql,$db);

// Проверяем, есть ли ошибки

if ($result2=='TRUE')

{ echo "Сделка прошла успешно!<br> <a href='index.html'>Главная страница</a>";}

else {echo "Ошибка! Что-то пошло не так";

echo $result2; }

unset($_SESSION['balance'],$_SESSION['price']);

echo $_SESSION['balance'];

include("bd.php");

$sql="INSERT INTO payments VALUES(NULL,'$bs','$bid')";

$result=mysql_query($sql,$db);

// Проверяем, есть ли ошибки

if ($result=='TRUE')

{echo "История сохранилась"; }

else {echo "Ошибка! История не сохранилась";

echo $result;}

?>

</body>

</html>

Обработчик соединения с БД

<?php

$db = mysql_connect ("localhost","Admin","Admin1");

mysql_select_db ("mybase",$db);?>

Приложение 2

БД

Рисунок 13 «Содержание таблицы users»

Рисунок 14 «Содержание таблицы stuff»

Рисунок 15 «Содержание таблицы payments»

Приложение 3

Java-скрипт

Скрипт обработки перехода на страницу выхода

<script>

function myWindow() {

var w = window.open('exit.php', 'Выход')}

</script>

Скрипт обработки последнего изменения страницы магазина

<script>

<!-- document.write('данная страница изменялась:

'+ document.lastModified + '<br>')//-->

</script>

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


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

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

    методичка [1,5 M], добавлен 06.07.2009

  • Теоретические основы применения технологии ADO в среде Delphi. Основные понятия и определения теории баз данных. Компоненты Delphi для создания приложений, оперирующих с базами данных. Общий вид и основные особенности работы приложения "Аптека".

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

  • Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.

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

  • Логическая и физическая модели базы данных. Запрет на содержание неопределенных значений. Размещение базы данных на сервере. Реализация клиентского приложения управления базой данных. Модульная структура приложения. Основные экранные формы приложения.

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

  • Описание существующих технологий, поддерживающих концепцию распределенных объектных систем. Особенности технологии DCOM. Разработка параметров приложения. Выбор инструмента разработки и его обоснование. Схема взаимодействия для локального приложения.

    курсовая работа [769,8 K], добавлен 05.01.2013

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

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

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

    курсовая работа [417,6 K], добавлен 25.03.2015

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

    курсовая работа [399,1 K], добавлен 26.08.2019

  • Проектирование системы управления базами данных. Особенности реализации в MS SQL. Разработка пользовательского интерфейса. Тестирование и отладка приложения. Руководство пользователя и системного администратора. Анализ и методы разработки приложений.

    курсовая работа [867,9 K], добавлен 16.07.2013

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

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

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