Федеральное агентство по образованию ГОУ ВПО Уфимский государственный авиационный технический университет

реклама
Федеральное агентство по образованию
ГОУ ВПО Уфимский государственный авиационный технический университет
Кафедра информатики
ОТЧЕТ
ПО ЛАБОРАТОРНОЙ РАБОТЕ №5
по дисциплине:
«Компьютерные технологии в науке и производстве»
на тему:
«Обработка данных средствами MySQL и PHP»
Выполнил:
магистрант гр. ТММ
САУ - 503
Долгодворова О.Н.
«2» ноября 2010 г.
Проверил:
канд.техн.наук, доцент
Минасов Ш.М.
« 2 » ноября 2010 г.
Оценка «
»
Уфа – 2010
ОГЛАВЛЕНИЕ
Введение ....................................................................................................................... 3
1.Цель работы .............................................................................................................. 3
2.Ход выполнения работы .......................................................................................... 3
3.Индивидуальное задание ......................................................................................... 3
3.1.Постановка задачи............................................................................................. 3
3.2.Фрагменты программного кода ....................................................................... 4
3.3.Экранные формы реализованного проекта .................................................... 4
Выводы ......................................................................................................................... 7
Список литературы ..................................................................................................... 8
Приложения ................................................................................................................. 9
2
ВВЕДЕНИЕ
Рассматривается возможность обработки данных средвами MySQL и PHP,
а также возможность создания web-приложения на языке php.
1. ЦЕЛЬ РАБОТЫ
Целью настоящей работы является: создания интерактивного Web –
приложения, работающего в режиме реального времени, которое осуществляет
обработку данных базы MySQL средствами PHP. Работа включает в себя
разграничения доступа пользователей, а также предусмотрен вход для
администратора системы.
2. ХОД ВЫПОЛНЕНИЯ РАБОТЫ
1. Выполнены и проанализированы примеры создания php-приложений для
работы с базами MySQL.
2. Выполнено индивидуальное задание для самостоятельной работы, а
именно, разработано web-приложение, для работы с базами MySQL. Ссылка на
php-приложение:
http://informatic.ugatu.ac.ru/resources/stdworks/mag2010/4436/laba5.htm
3. ИНДИВИДУАЛЬНОЕ ЗАДАНИЕ
3.1. Постановка задачи
В качестве индивидуального задания выдана тема «Обработка данных
таблицы доходов страховой компании», которая предполагает вывод исходной
таблицы базы данных. Исходными данными являются: управленческие
расходы, тарифы, объем продаж автомобилей за некоторый промежуток
времени. Доступ к данным предоставляется пользователю после успешной
авторизации. Доступ к данным предоставляется пользователю после успешной
авторизации и одобрение администрации.
3
3.2. Фрагменты программного кода
Файл: laba5.htm – «Форма запроса авторизации» в Приложении 1.
Файл: user.php – Страница доступа пользователя в Приложении 2.
Файл: agent.php – Страница доступа агента в Приложении 3.
Файл: admin.php – Страница доступа администратора в Приложении 4.
Файл: buhg.php – Страница доступа бухгалтерии в Приложении 5.
Файл: reg_user.php – «Форма регистрации пользователя» в Приложении 6.
Файл: reg.php – Специальная форма регистрации пользователя для
администратора в Приложении 7.
3.3. Экранные формы реализованного проекта
На рис. 1 представлена экранная форма страницы user.php.
Рисунок 1. Экранная форма страницы user.php
4
На рис. 2 представлена экранная форма страницы agent.php.
Рисунок 2. Экранная форма страницы agent.php
На рис. 3 представлена экранная форма страницы admin.php.
Рисунок 3. Экранная форма страницы admin.php
5
На рис. 4 представлена экранная форма страницы buhg.php.
Рисунок 4. Экранная форма страницы buhg.php
На рис. 5 представлена экранная форма страницы reg_user.php.
Рисунок 5. Экранная форма страницы reg_user.php
6
ВЫВОДЫ
В результате выполнения лабораторной работы была решена поставленная
в рамках самостоятельной работы задача: «Создание интерактивного webприложений, с разграничением прав доступа пользователей, а также доступом
для администратора системы». Было разработано функциональное webприложение с разграничением прав доступа.
Для
выполнения
индивидуального
задания
были
изучены:
язык
программирование php, язык описания SQL-скриптов.
7
СПИСОК ЛИТЕРАТУРЫ
1. Разработка распределенных интерактивных приложений на базе
Интернет- технологий: Лабораторный практикум по дисциплине
«Основы Интернет технологий» Часть 2 / Уфимск. гос. авиац. техн. ун-т;
Сост. Ш.М. Минасов. – Уфа, 2007. – 15 с.
2. Справочное руководство по MySQL. Дата обращения: 6.10.2010
http://www.mysql.ru/docs/man/
8
ПРИЛОЖЕНИЯ
Приложение 1. Полный текст сценария laba5.htm
<html>
<body bgcolor="#87cefa">
</body>
</html>
<br><H3>Авторизация пользователя</H3>
<form action="login.php" method="post">
<table>
<tr>
<td>Логин:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Пароль:</td>
<td><input type="password" name="password"
/></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Войти"
/></td>
</tr>
</table>
</form>
<a href="reg_user.php">Регистрация</a> 
<a href="bases.sql">Создание базы</a> 
<a href="Labs/Laba_5.doc">Отчет по работе</a>
<A href="laba1.htm"> <H2><U><I> <<к лабораторным работам
</A> </I></U></H2>
<A href="index.htm"> <H2><U><I> <<на главную </A>
</I></U></H2>
Приложение 2. Полный текст сценария user.php
<html>
<body bgcolor="#87cefa">
</body>
</html>
<?php
session_start();
9
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
// СМЕНИТЬ состояние ЗАЯВКи
if(isset($_GET['do']) and $_GET['do']=='add'){
$q4 = "INSERT INTO zayvka VALUES
('','".$_SESSION['id']."','".$_GET['id']."','".date("d.m.
Y")."','false','false')";
if(@mysql_query($q4)) {
header("location:user.php");
}
}
//ВЫЙТИ
if(isset($_GET['do']) and $_GET['do']=='exit'){
session_destroy();header("location: laba5.htm");
}
if (isset($_SESSION['login'])) { //ИДЕНТИФИКАЦИЯ
echo "<br><h3>Пользователь</h3>";
echo "<p align='left'>     Вы
выполнили вход как <b>пользователь</b>. ";
echo"<a href='user.php?do=exit'>Выйти из
профиля</a></p>";
$zakaz = "SELECT
zayvka.id_zayvka,klient.fio,zayvka.oplata,programms.nazva
nie_prog FROM zayvka,klient,programms where
zayvka.id_klienta=klient.id_klienta and
zayvka.id_prog=programms.id_prog and
klient.id_klienta='".$_SESSION['id']."'";
$res = mysql_query($zakaz);
10
if (mysql_num_rows($res)>0)
{
echo"Ваши текущие заявки:<br>";
while ($row_zak = mysql_fetch_assoc($res))
{
if($row_zak["oplata"]=="true") {echo"<font
color='green'>Одобрено!</font> ";} else {echo"<font
color='red'>На рассмотрении</font> ";}
echo"Заявка №".$row_zak["id_zayvka"]." по программе:
".$row_zak["nazvanie_prog"]."<br>";
if($row_zak["oplata"]=="true") {}
}}
$programms = "SELECT * FROM programms";
$result = mysql_query($programms);
echo"<h3>Доступные программы страхования</h3>";
echo "<table bordercolor='#000000' border='1px'
cellspacing='0' cellpadding='8'>";
echo "<tr><td><b>Код
программы</b></td><td><b>Название</b></td><td><b>Сумма
страх.</b></td><td><b>Срок</b></td><td><b>Выбор</b></td><
/tr>";
if (mysql_num_rows($result)>0)
{
while ($row = mysql_fetch_assoc($result))
{
echo
"<tr><td>".$row["id_prog"]."</td><td>".$row["nazvanie_pro
g"]."</td><td>".$row["summa_strahovania"]."</td><td>".$ro
w["srok"]."</td><td><form
action='user.php?do=add&id=".$row["id_prog"]."'
method=POST><input type='submit'
value='Выбрать'></form></td></tr>";
}
}
echo "</table>";
} //ИДЕНТИФИКАЦИЯ
else {
11
die('Доступ закрыт, пройдите <a
href="laba5.htm">авторизацию</a>.');
}
?>
Приложение 3. Полный текст сценария agent.php
<html>
<body bgcolor="#87cefa">
</body>
</html>
<?php
session_start();
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
// СМЕНИТЬ состояние ЗАЯВКи
if(isset($_GET['do']) and $_GET['do']=='add'){
$q4 = "UPDATE zayvka SET status='true' WHERE
id_zayvka='".$_GET['id']."'";
if(@mysql_query($q4)) {
header("location:agent.php");
}
}
//ВЫЙТИ
if(isset($_GET['do']) and $_GET['do']=='exit'){
session_destroy();header("location: laba5.htm");
}
if (isset($_SESSION['login'])) { //ИДЕНТИФИКАЦИЯ
echo "<br><h3>Агент</h3>";
echo "<p align='left'>     Вы
выполнили вход как <b>агент</b>. ";
echo"<a href='agent.php?do=exit'>Выйти из
профиля</a></p>";
12
$zayvka = "SELECT
zayvka.id_zayvka,klient.fio,klient.vozrast,klient.pol,kli
ent.telephon,programms.nazvanie_prog,zayvka.status FROM
zayvka,klient,programms where
zayvka.id_klienta=klient.id_klienta and
zayvka.id_prog=programms.id_prog ORDER by `id_zayvka`";
$result = mysql_query($zayvka);
echo "<table bordercolor='#000000' border='1px'
cellspacing='0' cellpadding='8'>";
echo "<tr><td><b>Ид.
заявки</b></td><td><b>Ф.И.О.</b></td><td><b>Возраст</b></
td><td><b>Пол</b></td><td><b>Телефон</b></td><td><b>Прогр
амма</b></td><td><b>Действие</b></td></tr>";
if (mysql_num_rows($result)>0)
{//3
while ($row = mysql_fetch_assoc($result))
{//2
echo
"<tr><td>".$row["id_zayvka"]."</td><td>".$row["fio"]."</t
d><td>".$row["vozrast"]."</td><td>".$row["pol"]."</td><td
>".$row["telephon"]."</td><td>".$row["nazvanie_prog"]."</
td>";
echo"<td>";
if ($row["status"]=='false') echo"<a
href='?do=add&id=".$row["id_zayvka"]."'>Принять</a></td>"
; else echo"Принято!</td>";
echo"</tr>";
}//2
}//3
echo "</table>";
if (mysql_num_rows($result)==0) echo"<br><font
color='red'>Внимание:</font> У вас нет заявок!";
} //ИДЕНТИФИКАЦИЯ
else {
die('Доступ закрыт, пройдите <a
href="laba5.htm">авторизацию</a>.');
13
}
?>
Приложение 4. Полный текст сценария admin.php
<html>
<body bgcolor="#87cefa">
</body>
</html>
<?php
session_start();
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
// СМЕНИТЬ КАТЕГОРИЮ
if(isset($_GET['do']) and $_GET['do']=='change'){
$q4 = "UPDATE klient SET category='".$_POST['cat']."'
WHERE login='".$_GET['id']."'";
if(@mysql_query($q4)) {
header("location:admin.php");
}
}
//УДАЛИТЬ ЮЗЕРА
if(isset($_GET['do']) and $_GET['do']=='delete'){
$q4 = "DELETE FROM klient WHERE
login='".$_GET['id']."'";
if(@mysql_query($q4)) {
header("location:admin.php");
}
}
//ВЫЙТИ
if(isset($_GET['do']) and $_GET['do']=='exit'){
session_destroy();header("location: laba5.htm");
}
if(isset($_GET['do']) and $_GET['do']=='reg'){
header("location:reg.php");
14
}
if (isset($_SESSION['login'])) {
echo "<h3>Панель администрирования</h3>";
echo "<p align='left'>Вы выполнили вход как
<b>администратор</b>. ";
echo"<a href='admin.php?do=exit'>Выйти из профиля</a>";
echo" <a href='admin.php?do=reg'>Регистрация
пользователя</a></p>";
$klient = "SELECT * FROM klient";
$result = mysql_query($klient);
echo "<table bordercolor='#000000' border='1px'
cellspacing='0' >";
echo "<tr
bgcolor='lightgrey'><td><b>Ид.</b></td><td><b>Ф.И.О.</b><
/td><td><b>Логин</b></td><td><b>Пароль</b></td><td><b>Кат
егория</b></td><td><b>Выбрать
права</b></td><td><b>Действие</b></td></tr>";
if (mysql_num_rows($result)>0)
{
while ($row = mysql_fetch_assoc($result))
{
echo "<tr><td align='center'
width='50'>".$row["id_klienta"]."</td><td align='center'
width='150'>".$row["fio"]."</td><td align='center'
width='100'>".$row["login"]."</td><td align='center'
width='100'>".$row["password"]."</td><td align='center'
width='30'>".$row["category"]."</td>
<td width='130'>
<form action='admin.php?do=change&id=".$row["login"]."'
method=POST>
<input type=radio name='cat' value='agent'";if
($row["category"]=='agent'){echo" CHECKED";}echo">Агент
<br><input type=radio name='cat' value='admin'";if
($row["category"]=='admin'){echo" CHECKED";}echo">Админ
<br><input type=radio name='cat' value='buhg'";if
($row["category"]=='buhg'){echo"
CHECKED";}echo">Бухгалтер
15
<br><input type=radio name='cat' value='user'";if
($row["category"]=='user'){echo"
CHECKED";}echo">Пользователь
</td><td align='center'><a
href='admin.php?do=delete&id=".$row["login"]."'>Удалить</
a>
<br><input type=submit value='Сменить'>
</form>
</td></tr>";
}
}
echo "</table>";
}
else {
die('Доступ закрыт, пройдите <a
href="laba5.htm">авторизацию</a>.');
}
?>
Приложение 5. Полный текст сценария buhg.php
<html>
<body bgcolor="#87cefa">
</body>
</html>
<?php
session_start();
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
// СМЕНИТЬ состояние ЗАЯВКи
if(isset($_GET['do']) and $_GET['do']=='add'){
$q4 = "UPDATE zayvka SET oplata='true' WHERE
id_zayvka='".$_GET['id']."'";
if(@mysql_query($q4)) {
header("location:buhg.php");
16
}
}
//ВЫЙТИ
if(isset($_GET['do']) and $_GET['do']=='exit'){
session_destroy();header("location: laba5.htm");
}
if (isset($_SESSION['login'])) { //ИДЕНТИФИКАЦИЯ
echo "<br><h3>Бухгалтер</h3>";
echo "<p align='left'>     Вы
выполнили вход как <b>бухгалтер</b>. ";
echo"<a href='buhg.php?do=exit'>Выйти из
профиля</a></p>";
$zayvka = "SELECT
zayvka.id_zayvka,klient.fio,klient.vozrast,klient.pol,kli
ent.telephon,zayvka.status,zayvka.oplata,programms.nazvan
ie_prog FROM zayvka,klient,programms where
zayvka.id_klienta=klient.id_klienta and
zayvka.id_prog=programms.id_prog ORDER by `id_zayvka`";
$result = mysql_query($zayvka);
echo "<table bordercolor='#000000' border='1px'
cellspacing='0' cellpadding='8'>";
echo "<tr><td><b>Ид.
заявки</b></td><td><b>Ф.И.О.</b></td><td><b>Возраст</b></
td><td><b>Пол</b></td><td><b>Телефон</b></td><td><b>Прогр
амма</b></td><td><b>Действие</b></td></tr>";
if (mysql_num_rows($result)>0)
{
while ($row = mysql_fetch_assoc($result))
{//1
if ($row["status"]=='true')
{///2
echo
"<tr><td>".$row["id_zayvka"]."</td><td>".$row["fio"]."</t
d><td>".$row["vozrast"]."</td><td>".$row["pol"]."</td><td
>".$row["telephon"]."</td><td>".$row["nazvanie_prog"]."</
td>";
echo"<td>";
17
if ($row["oplata"]=='false') echo"<a
href='buhg.php?do=add&id=".$row["id_zayvka"]."'>Принять</
a></td>"; else echo"Принято!</td>";
echo"</tr>";
}///2
}//1
}
echo "</table>";
} //ИДЕНТИФИКАЦИЯ
else {
die('Доступ закрыт, пройдите <a
href="laba5.htm">авторизацию</a>.');
}
?>
Приложение 6. Полный текст сценария reg_user.php
<html>
<body bgcolor="#87cefa">
</html>
</body>
<?php
if (empty($_POST))
{
?>
<br><h3>Регистрация</h3>
<form action="reg_user.php" method=POST>
<table border="0">
<tr><td>Введите логин:</td> <td><input type=text
name="login"></td></tr>
<tr><td>Введите пароль: </td> <td><input type=password
name="password"></td></tr>
<tr><td>Введите Ф.И.О.: </td> <td><input type=text
name="fio"></td></tr>
<tr><td>Возраст: </td> <td><input type=text
name="vozr"></td></tr>
<tr><td>Пол: </td> <td><input type=text
name="pol"></td></tr>
<tr><td>Телефон: </td> <td><input type=text
name="tel"></td></tr>
18
<tr><td colspan="2" align="center"><input type=submit
value="Отправить"> <input type=reset
value="Отменить"></td></tr>
</table>
<H3><a href='admin.php'><<назад</a></H3>
</form>
<?php
}
else
{
session_start();
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
$error=0;
$d = mysql_query("SELECT * FROM klient",$dbh);
$c = mysql_num_rows($d);
for($i=0;$i<=$c;$i++)
{
$iden = "SELECT login FROM klient where
login='".$_POST['login']."'";
$zapros = mysql_query($iden,$dbh);
if($row=MySQL_fetch_array($zapros)) {
$error=1;
};
};
if($error==0)
{
$ins = mysql_query("insert into klient values
('','".$_POST['fio']."','".$_POST['vozr']."','".$_POST['p
ol']."','".$_POST['tel']."','".$_POST['login']."','".$_PO
ST['password']."','user')",$dbh);
if($ins) {
19
header("location: laba5.htm");
};
}
else
{
echo"Учетная запись с таким логином уже существует! <a
href='reg_user.php'><<назад</a>";
};
}
?>
Приложение 7. Полный текст сценария reg.php
<html>
<body bgcolor="#87cefa">
</body>
</html>
<?php
if (empty($_POST))
{
?>
<br><h3>Регистрация</h3>
<form action="reg.php" method=POST>
<table border="0">
<tr><td>Введите логин:</td> <td><input type=text
name="login"></td></tr>
<tr><td>Введите пароль: </td> <td><input type=password
name="password"></td></tr>
<tr><td>Введите Ф.И.О.: </td> <td><input type=text
name="fio"></td></tr>
<tr><td>Возраст: </td> <td><input type=text
name="vozr"></td></tr>
<tr><td>Пол: </td> <td><input type=text
name="pol"></td></tr>
<tr><td>Телефон: </td> <td><input type=text
name="tel"></td></tr>
<tr><td colspan='2'>
<input type=radio name='cat' value='agent' CHECKED>Агент
 
<input type=radio name='cat' value='admin'>Админ  
20
<input type=radio name='cat' value='buhg'>Бухгалтер
 
<input type=radio name='cat' value='user'>Пользователь
</td></tr>
<tr><td colspan="2" align="center"><input type=submit
value="Отправить"> <input type=reset
value="Отменить"></td></tr>
</table>
<h3><a href='admin.php'><<назад</a></h3>
</form>
<?php
}
else
{
session_start();
include("connect.php");
$dbh=mysql_connect($host,$user,$pswd) or die("Не могу
соединиться с MySQL.");
mysql_select_db($database) or die("Не могу подключиться к
базе.");
$error=0;
$d = mysql_query("SELECT * FROM klient",$dbh);
$c = mysql_num_rows($d);
for($i=0;$i<=$c;$i++)
{
$iden = "SELECT login FROM klient where
login='".$_POST['login']."'";
$zapros = mysql_query($iden,$dbh);
if($row=MySQL_fetch_array($zapros)) {
$error=1;
};
};
if($error==0)
{
21
$ins = mysql_query("insert into klient values
('','".$_POST['fio']."','".$_POST['vozr']."','".$_POST['p
ol']."','".$_POST['tel']."','".$_POST['login']."','".$_PO
ST['password']."','".$_POST['cat']."')",$dbh);
if($ins) {
header("location: admin.php");
};
}
else
{
echo"Учетная запись с таким логином уже существует! <a
href='reg.php'><<назад</a>";
};
}
?>
22
Скачать