Федеральное агентство по образованию ГОУ ВПО Уфимский государственный авиационный технический университет Кафедра информатики ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №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>&nbsp; <a href="bases.sql">Создание базы</a>&nbsp; <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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вы выполнили вход как <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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вы выполнили вход как <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"&nbsp;<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'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Вы выполнили вход как <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="Отправить">&nbsp;<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>Агент &nbsp; <input type=radio name='cat' value='admin'>Админ &nbsp; 20 <input type=radio name='cat' value='buhg'>Бухгалтер &nbsp; <input type=radio name='cat' value='user'>Пользователь </td></tr> <tr><td colspan="2" align="center"><input type=submit value="Отправить">&nbsp;<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