Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Описание алгоритмов скриптов пользовательской части




Схема взаимодействия скриптов пользовательской части

Рис. 6.8 – Схема взаимодействия скриптов пользовательской части приложения

Из схемы видно, что пользовательская часть приложения начинается с файла index.php, расположенного в папке htdocs. Перейдя по ссылке «Входпользователя», пользователь должен ввести логин и пароль (файл authorize.php, расположенный в папке USERS). Если администратор заблокировал пользователя по каким-то причинам, то пользователю выдается соответствующее сообщение (файл index.php, расположенный в папке FORUM). После правильного ввода логина и пароля и успешной проверки на блокировку пользователя переходим на страницу пользователя (файл index_main.php, расположенный в папке FORUM). Если пользователь не зарегистрирован, ему предоставляется возможность зарегистрироваться на сайте, перейдя поссылке Регистрация, появляется форма регистрации (файл registration_form.htm). Затем появляется сообщение об успешной регистрации или об ошибке (файл registration.php). Также пользователю пройдя по ссылке Изменение учетных данных, сначала необходимо ввести логин и пароль (файл izmenenie_do.php), затем при удачном вводе попадаем на страницу изменения данных пользователя. Пользователь может загрузить фото или видео, либо удалить фото или видео (файл izmenenie1p.php). Перед удалением фото или видео, загружается страница с сообщением о подтверждении удаления (файл izmenenie2.php). После выполнения всех необходимых действий для изменения, необходимо перейти по ссылке Изменить данные (файл izmenenie1.php).

 

Пользовательская часть начинается со скрипта index.php, который формирует страницу для пользователя со ссылками на вход на форум, регистрацию и изменение учетных данных пользователя. Скрипт находится в корневой папке htdocs и выполняет следующие действия:

Формируем html страницу Вход пользователя

Формируем форму с кнопкой Вход на форум

print "<form method=\"POST\" action=\"USERS/authorize.php\" >";

print "<input type=\"submit\" value=\"Вход на форум\" name=\"Perehod1\" ></form>";

Формируем форму с кнопкой Регистрации

print "<form method=\"POST\" action=\"USERS/registration_form.htm\" >";

print "<input type=\"submit\" value=\"Регистрация\" name=\"Perehod2\" ></form>";

Формируем форму с кнопкой Изменение учетных данных

print "<form method=\"POST\" action=\"USERS/izmenenie_do.php\" >";

print "<input type=\"submit\" value=\"Изменение учетных данных\" name=\"Perehod3\" ></form>";

Также на страницу загружено несколько изображений

print "<img border=\"0\" width=\"200\" height=\"200\" src=\"USERS/PICTURES/pictures_users/ image_10.JPG\" width=\"133\" height=\"108\" align=\"center\">";

print "<img border=\"0\" width=\"200\" height=\"200\" src=\"USERS/PICTURES/pictures_users/ image_11.JPG\" width=\"133\" height=\"108\" align=\"center\">";

По нажатию на кнопку Вход на форум, срабатывает скрипт authorize.php авторизации пользователя, расположенный в папке USERS и выполняет следующие действия:

Подключаем заголовочные файлы include ("..\info.dan");

Связываемся с сервером баз данных. Выбираем базу данных на сервере

Создаем форму если не существует параметра go

if (!isset($_GET['go'])){

Формируем html страницу Входа пользователя на форум

print "<title>Регистрация пользователя</title>";

print "<p align=\"center\"> Вы находитесь на странице входа пользователей!!! </p> ";

print "<p align=\"center\"><b><font color=\"#993300\" size=\"5\">Для входа вам необходимо

ввести логин и пароль</font></b><font color=\"#993300\"> </font></p>";

Формируем форму входа пользователя на форум

print "<form action=$PHP_SELF>";

print "<td rowspan=\"4\" width=\"140\" align=\"center\"><img border=\"0\" width=\"145\" height=\"145\" src=\"PICTURES/pictures_users/image_3.JPG\" width=\"133\" height=\"108\" align=\"right\"></td>";

print "<td width=\"182\" height=\"54\"> Имя:</td>";

print "<td><input type=text name=login size=50> </td>";

print "<td width=\"182\"> Пароль: </td>";

print "<td><input type=password name=passwd size=50></td>";

Формируем кнопку Входа и Сброса введенной информации

<input type=submit name=go value=Войти ">";

<input type=reset name=res value='Сброс' "></form>";

Формируем кнопку Возврата на главную страницу

print "<form method=\"POST\" action=\"../index.php\" >";

<input type=\"submit\" value=\"Вернуться\" name=\"Vozvrat\" ></form>";

Если логин и пароль уже вводились создаем новую сессию или восстанавливаем текущую

else { session_start();

Регистрируем переменную login

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

Регистрируем переменную passwd

$_SESSION['passwd']=$_GET['passwd'];

Теперь логин и пароль - глобальные переменные для этой сессии

Проверяем на существование пользователя, читаем логин и пароль из базы данных

$q=mysql_query("select * from $tab_users where user='$login' and password='$passwd'") or okno("Обращение к таблице c информацией о пользователях", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка обращения к таблице c информацией о пользователях", "", "", 1);

Проверяем что этот пользователь есть

$stroka=mysql_fetch_row($q);

Если логин и пароль совпадают, то

if ($_GET['login']==$stroka[1] && $_GET['passwd']==$stroka[2]) {

Перенаправляем на страницу форума

Header("Location:../FORUM/index.php"); }

Если логин и пароль введены неправильно, то вызываем функцию, которая формирует html страницу с сообщением об ошибке.

Если логин и пароль введены правильно, но пользователь был заблокирован, то срабатывает скрипт index.php, который расположен в папке FORUM и выполняет следующие действия:

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

$server_name="sql-4.ayola.net";

$user_name="sforum615";

$user_password="su6wiw4fll";

$databasename="sforum615";

$tab_users="users";

$tablename_black="black";

$tablename_black_login="black_login";

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

mysql_connect($server_name, $user_name, $user_password) or okno("Подключение к серверу БД", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Не могу подключиться к серверу базы данных", "", "", 1);

Выбираем базу данных

mysql_select_db($databasename) or okno("Выбор БД", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Не могу выбрать базу данных на сервере", "", "", 1);

Проверяем, что пользователь есть в сессиях, include ("proverka.dat");

Не пускаем черные ip-адреса на сайт

Определение IP адреса компьютера, с которого пришел клиент

$Ip = $_SERVER ["REMOTE_ADDR"];

Пытаемся получить одну запись из таблицы черных ip-адресов

$s="select * from $tablename_black where ipadress='$Ip'";

$q=mysql_query($s) or okno("обращения к таблице c информацией о черных ip адресах", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка обращения к таблице c информацией о черных ip адресах", "", "", 1);

Если не выбрана ни одна запись - не ip-черный список

if (mysql_numrows($q)!=0) {

okno("", "PICTURES/pictures_forum/image_fon.jpg", "", "Сообщение", "<p align=center><font color=#FF0000><b>Доступ на сайт пользователю $s1 запрещен!!!<BR> Вы находитесь в черном списке ip</b></font></p>", "../index.php", "Вернуться на форум", 0);

} else {

Не пускаем черные логины на сайт

Пытаемся получить одну запись из таблицы черных логинов

$s="select * from $tablename_black_login where user='$s1'";

$q=mysql_query($s) or okno("обращения к таблице c информацией о черных логинах", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка обращения к таблице c информацией о черных логинах", "", "", 1);

Если не выбрана ни одна запись - Не черный список логинов

if (mysql_numrows($q)!=0) {

okno("", "PICTURES/pictures_forum/image_fon.jpg", "", "Сообщение", "<p align=center><font color=#FF0000><b>Доступ на сайт пользователю $s1 запрещен!!!<BR> Вы находитесь в черном списке логинов</b></font></p>", "../index.php", "Вернуться на форум", 0);

} else {

Перенаправляем на форум

Header("Location: index_main.php"); } }

При удачном вводе логина и пароля переходим на скрипт index_main.php, предназначенный для формирования страницы общения пользователей. Скрипт index_main.php выполняет следующие действия:

Подключаем заголовочные файлы

$server_name="localhost"; // задаем имя сервера

$user_name="root"; // задаем имя пользователя

$user_password="admin"; // задаем пароль пользователя

$databasename="KONFERENCES"; // задаем имя базы данных

$tablename="KONF"; // задаем имя таблицы для хранения сообщений

$adm=md5('123'); // задаем имя администратора

$ps=md5('123'); // задаем пароль адмистратора

$tab_users="users";

Подключаемся к серверу баз данных и базе данных на сервере. Соединяемся с сервером, передавая имя пользователя и пароль

mysql_connect($server_name, $user_name, $user_password) or okno("Подключение к серверу БД", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Не могу подключиться к серверу базы данных", "", "", 1);

Выбираем базу данных

mysql_select_db($databasename) or okno("Выбор БД", "/ADM/PICTURES/pictures_adm_users/ image_fon.jpg", "", "Ошибка", "Не могу выбрать базу данных на сервере", "", "", 1);

Проверяем, что пользователь есть в сессиях

include ("get_client_ip.php");

include ("proverka.dat");

Переменные по методу POST

if($_SERVER['REQUEST_METHOD']=='POST') {

$parametr = $_POST['parametr'];

$message = $_POST['message'];

$contakts = $_POST['contakts'];

$ipadress = $_POST['ipadress'];

$chislo = $_POST['chislo'];

$unid = $_POST['unid']; // номер последнего сообщения }

Переменные по методу GET

if($_SERVER['REQUEST_METHOD']=='GET') {

$parametr = $_GET['parametr']; // действие над данными

$p = $_GET['p']; // номер страницы }

if ($p=="") $p=1;

Если параметр $parametr не определен, то выводим сообщения на страницу

if (!isset($parametr)){

Формируем html-страницу, со ссылкой на добавление сообщения, возврат на главную страницу и выход

print "<a href=index_main.php?parametr=exit_user> Выход </a> </font> <br>";

print "<a href=index_main.php?parametr=add><font size=\"-1\">";

print "<b>Добавить сообщение</b></font></a><br><br>";

print "<a href=/index.php><font size=\"-1\">";

print "<b>Вернуться на главную страницу</b></font></a><br><br>";

Формируем таблицу, в которой будут хранится сообщения

Выбираем указанные поля из таблицы. Упорядочиваем по уменьшению номеров

$q=mysql_query("select number, message, contakts, chislo, ipadress, server, user from $tablename ORDER BY unid desc") or okno("Выбор записи", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Невозможно выбрать записи!", "", "", 1);

Получаем количество записей в таблице

$kol_zap=mysql_num_rows($q);

Если количество сообщений > 10

if ($kol_zap>10) {

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

print "<tr><td colspan=2 width=100% align=center style='BACKGROUND: 0000FF; COLOR: WHITE;'><font>Страницы: ";

Выводим номера страниц. Переменная j будет определять номер страницы

$kol_str=$kol_zap/10;

for ($i=0; $i<$kol_str; $i++) {

$j=$i+1;

print "[";

Для страницы не равной текущей формируем ссылку

if (!isset($p) || $p<>$j) { print "<a href=index_main.php?p=$j>"; }

Выводим номер страницы

print $j;

Для страницы не равной текущей формируем конец ссылки

if (!isset($p) || $p<>$j) { print "</a>"; }

print "] "; } }

$pz - номер первой записи на странице, для первой страницы = 0. Для остальных считается по формуле (номер страницы-1)*10. Если запись не первая, то

if (isset($p)) { $pz=($p-1)*10; }

Если запись первая, то

else { $pz=0;}

Начиная с номера $pz из таблицы выбираем десять записей

$q=mysql_query("select number, message, contakts, chislo, ipadress, server, user from $tablename ORDER BY unid desc limit $pz, 10") or okno("Выбор записи из таблицы", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Невозможно выбрать записи из таблицы!", "", "", 1);

Выводим на экран в виде ячеек таблицы

while ($b=mysql_fetch_row($q)) {

print "<tr><td width=20% align=center valign=top rowspan=2 style='BACKGROUND: 0000FF; COLOR: WHITE;'><font size=\"-1\">сообщение № $b[0]<br>прислано пользователем &nbsp; <font color=yellow>$b[6]</font> <BR> $b[3]";

print "<br> с &nbsp; $b[5] &nbsp; (ip $b[4])<br></font></td>";

Вставляем фото

Получаем из таблицы пользователей по имени название фото

$q10=mysql_query("select * from $tab_users where user='$b[6]'") or okno("Обращение к таблице c информацией о пользователях", "/ADM/PICTURES/pictures_adm_users/ image_fon.jpg", "", "Ошибка", "Ошибка обращения к таблице c информацией о пользователях", "", "", 1);

$stroka=mysql_fetch_row($q10);

$adres="../FOTO_USERS/".$stroka[3];

print "<img border=\"0\" src='$adres' width=153 height=112>";

Вставляем видео

print "<td rowspan=\"2\">";

$adres_v="../VIDEO_USERS/".$stroka[4];

print "<a href='$adres_v'> Видеоролик </a></td>";

print "<font size=\"-1\">&nbsp;&nbsp;&nbsp;Контактная информация:</font>";

print "&nbsp;&nbsp;&nbsp;<font size=\"-1\">$b[2]</font></td></tr>"; } }

Если параметр $parametr не определен, то конец действий

Если параметр $parametr определен и равен add, формируем форму добавления сообщения на страницу

if (isset($parametr) && $parametr=="add") {

function Reset_message(v) {

Количество элементов в форме

var x = document.myForm.elements.length;

Проходим по всем элементам формы и очищаем их

for (var i=0; i<x; i++) { if (v==1)

if (document.myForm.elements[i].type == "textarea") {

document.myForm.elements[i].value = ""; }

if (v==2)

if (document.myForm.elements[i].type == "text") {

document.myForm.elements[i].value = ""; } } }

Формируем html страницу Добавления сообщения. Формируем форму на web-странице

print "<center><form name=\"myForm\" method=\"POST\" action=\"$PHP_SELF\">";

print "<tr><td width=20% valign=middle align=left><font size=\"-1\">Текст сообщения:</font> </td>";

Выводим поле для ввода сообщения

print "<textarea name=\"message\" rows=7 cols=75 style='BACKGROUND: 00FF00; COLOR: BLACK;'></textarea></td></tr>";

print "<tr><td width=20% valign=middle align=left><font size=\"-1\">Контактная информация:</font>";

Выводим поле для ввода контактной информации

<input type=\"text\" name=\"contakts\" size=100 style='BACKGROUND: 00FF00; COLOR: BLACK;'>";

Передаем из формы значение параметра parametr=addnew

print "<input type=\"hidden\" name=\"parametr\" value=\"addnew\">";

Получаем текущую дату и передаем из формы ее значение

$today=date ("j/n/Y");

print "<input type=\"hidden\" name=\"chislo\" value=\"$today\">";

Передаем из формы параметр ipadress

print "<br><br><input type=\"hidden\" name=\"ipadress\" value=\"$REMOTE_ADDR\"><input type=\"submit\" value=\"отправить\">&nbsp;&nbsp;";

print "<input type=\"button\" value=\"очистить сообщение\" onclick=\"Reset_message(1)\">";

print "<input type=\"button\" value=\"очистить контактную информацию\" onclick=\"Reset_message(2)\">";

print "<input type=\"reset\" value=\"очистить\"></td></tr>";

print "</table></form></center></body>"; }

Добавляем сообщения на страницу

if (isset($parametr) && $parametr=="addnew") {

Если переданные параметры не пустые

if ($message<>"") { if ($contakts==""){$contakts="неизвестна";}

то выбираем поле номер из таблицы и упорядочиваем по дате публикации

$a=mysql_query("select number from $tablename ORDER BY chislo") or okno("Выбор номера", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка выборки номера", "", "", 1);

Просматриваем поле number и ищем наибольший номер сообщения

$c=0;

while ($b=mysql_fetch_row($a)) { if ($b[0]>$c) { $c=$b[0]; } }

$c=$c+1; // вычисляем номер сообщения (max+1)

Вычисляем значение хоста(DNS) по ip

$server=gethostbyaddr($ipadress);

Добавляем в таблицу одну запись и устанавливаем значение ее поля number в $c

mysql_query("insert into $tablename set number='$c'") or okno("Добавление номера", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка добавления номера", "", "", 1);

заносим в поле message этой записи значение переменной $message из формы клиента

mysql_query("update $tablename set message='$message' where number='$c'");

Получаем текущее время

$vrem=time();

заносим в поле vremya этой записи значение переменной $vrem

mysql_query("update $tablename set vremya='$vrem' where number='$c'");

заносим в поле contakts этой записи значение переменной $contakts из формы клиента

mysql_query("update $tablename set contakts='$contakts' where number='$c'");

заносим в поле chislo этой записи значение переменной $chislo из формы клиента

mysql_query("update $tablename set chislo='$chislo' where number='$c'");

заносим в поле ipadress этой записи значение переменной $ipadress из формы клиента

mysql_query("update $tablename set ipadress='$ipadress' where number='$c'");

заносим в поле server этой записи значение переменной $server из формы клиента

mysql_query("update $tablename set server='$server' where number='$c'");

заносим в поле user этой записи значение переменной $_SESSION['login']

$s_login=$_SESSION['login'];

mysql_query("update $tablename set user='$s_login' where number='$c'");

Отображаем html страничку об успешном размещении сообщения }

Если поле сообщения не заполнено, то формируется страница с сообщением-просьбой вернутся и заполнить поле текст сообщения

По нажатию на кнопку Регистрация, срабатывает скрипт registration_form.htm регистрации пользователя, расположенный в папке USERS и выполняет следующие действия:

Формируем html страницу Регистрации пользователя, на которой расположена форма для ввода логина и пароля.

<form method="POST" action="registration.php" >

<table border="1" width="50%" id="table3" height="156">

<td rowspan="4" width="140" align="center"><img border="0" width="145" height="145"src="PICTURES/pictures_users/image_3.JPG" width="133" height="108" align="right"></td>

<td width="182" height="54"> <p align="center"><b><font size="5" color="#000080"> Пользователь </font><font size="4" color="#800000"> </font></b></td>

<td> <input type='text' name='user' size=50></td>

<td width="182"> <p align="center"><b> Пароль </b> </td>

<td> <input type='password' name='password' size=50> </td>

<input type="submit" value="Зарегистрироваться" name="Voiti" ></td>

<input type="reset" value="Сброс" name="B2" > </tr> </table> </form>

А также кнопка для возврата на предыдущую страницу.

По нажатию на кнопку Зарегистрироваться, срабатывает скрипт registration.php регистрации пользователя, который выполняет следующие действия:

Подключаем заголовочные файлы include("../info.dan");

Связываемся с сервером баз данных c указанным именем и паролем

Выбираем базу данных на сервере

$f_user = $_POST['user'];

$f_password = $_POST['password'];

Если имя пользователя или пароль не были введены,

if (($f_user=='') || ($f_password=='')) {

то вызываем функцию okno(), которая формирует страницу с сообщением об ошибке и просьбой ввести всю необходимую информацию. А также кнопкой возврата к регистрации. }

Если все данные были введены, то

else {

$q=mysql_query("select * from $tab_users where user='$f_user'") or die ("Не смогли выбрать запись из таблицы пользователей!");

Проверяем есть ли такой пользователь в таблице, если нет, то

if (mysql_num_rows($q)==0) {

Формируем html страницу, об успешном добавлении пользователя. Запрос на занесение в таблицу информации из формы имеет вид:

mysql_query("insert into $tab_users values(0,'$f_user','$f_password','','')") or okno("Выбор записи из таблицы пользователей", "/ADM/PICTURES/pictures_adm_users/ image_fon.jpg", "", "Ошибка", "Не смогли выбрать запись из таблицы пользователей!", "", "", 1); }

Если же такой пользователь уже есть в таблице, то

else {

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

По нажатию на кнопку Изменение учетных данных, срабатывает скрипт izmenenie_do.php входа пользователя для изменения данных, который выполняет следующие действия:

Удаляем куки (т.к. значение переменной пусто).

setcookie("login","",time()-7*24*60*60, '/', false, 0);

setcookie("pass","",time()-7*24*60*60, '/', false, 0);

Формируем html страницу для изменения данных пользователя с формой для ввода логина и пароля пользователя

print "<form method=\"POST\" action=\"izmenenie.php\" >";

А также кнопкой Входа как пользователь и Возврата на главную страницу.

print "</form>";

По нажатию на кнопку Войти, срабатывает скрипт izmenenie.php изменения учетных данных пользователя, который выполняет следующие действия:

Подключаем заголовочные файлы include ("..\info.dan");

Если пришли с главной формы (со страницы регистрации)

if($_SERVER['REQUEST_METHOD']=='POST') {

Получить переменные login и pass из формы методом Post

$login = $_POST['login'];

$pass = $_POST['pass'];

Создаем COOKIE login и pass

setcookie("login",$login, false, '/', false, 0);

setcookie("pass",$pass, false, '/', false, 0); }

Если вернулись с какой-то страницы

else {

if (isset($_COOKIE["login"])) { $login = $_COOKIE["login"];}

if (isset($_COOKIE["pass"])) { $pass = $_COOKIE["pass"];} }

Связываемся с сервером баз данных c указанным именем и паролем. Выбираем базу данных на сервере

Получаем все записи из таблицы пользователей

$q=mysql_query("select * from $tab_users where user='$login' and password='$pass'") or okno("Обращение к таблице c информацией о пользователях", "/ADM/PICTURES/pictures_adm_users/image_fon.jpg", "", "Ошибка", "Ошибка обращения к таблице c информацией о пользователях", "", "", 1);

Получаем информацию о пользователе, если он есть в таблице

if (mysql_numrows($q)!=0) {

$stroka=mysql_fetch_row($q);

Формируем html страницу с данными пользователя, находящимися в таблице и кнопками для изменения данных.

Таблица содержит такие поля:

print "<td align=center bgcolor=\"#0000FF\"> Код </td>";

print "<td align=center bgcolor=\"#0000FF\" > Пользователь </td>";

print "<td align=center bgcolor=\"#0000FF\"> Пароль </td>";

print "<td align=center bgcolor=\"#0000FF\"> Изменить фото </td>";

print "<td align=center bgcolor=\"#0000FF\"> Изменить видео </td>";

print "<td align=center bgcolor=\"#0000FF\"> X </td>";

Сохраняем старые имена фото и видео

$adres_foto_old=$stroka[3];

$adres_video_old=$stroka[4];

print "<form enctype=\"multipart/form-data\" name=form_izmenenie method=post action='izmenenie1.php'>";

<input type='text' name='kod' value='$stroka[0]' size=5 readonly >

<input type='text' name='login' value='$stroka[1]' size=15 readonly > </font> </td>";

<input type='text' name='pass' value='$stroka[2]' size=15 > </td>";

print "<td align=center bgcolor=#FFFFFF>";

Выводим фотографию пользователя

$adres="../FOTO_USERS/".$stroka[3];

print "<img border=\"0\" src='$adres' width=153 height=112>";

<input type='file' name='adres_foto'size=15 >

Выводим ссылку на видео пользователя

$adres_v="../VIDEO_USERS/".$stroka[4];

print "<embed width=153 height=112 type =\"application/x-shockwave-flash\" src=$adres_v></embed>";

<input type='file' name='adres_video' size=15"> ";

print "<td align=center bgcolor=#FFFFFF style=\"vertical-align: bottom\">";

print "<input type='reset' name='B1' value='Сброс' > "</td>";

print "<input type='hidden' name ='adres_foto_old' value=$adres_foto_old>";

print "<input type='hidden' name ='adres_video_old' value=$adres_video_old>";

print "<input type='submit' name='B1' value='Изменить данные' > </td>";

print "</tr></form ></table>";

Форма для создания кнопок Удалить_фото и Удалить_видео.

print "<form method=\"POST\" name=\"forma2\" action=\"izmenenie1p.php\">";

print "<input type='hidden' name='kod' value='$stroka[0]'>";

print "<input type='hidden' name='user' value='$stroka[1]'>";

print "<input type='hidden' name='adres_foto' value='$stroka[3]'>";

print "<input type='hidden' name='adres_video' value='$stroka[4]'>";

print "<input type =\"submit\" name=\"Udalit_foto\" value= \"Удалить_фото\" > </td>";

print "<input type =\"submit\" name=\"Udalit_video\" value= \"Удалить_видео\"> </td></tr></form >";

А также кнопка для возврата на главную страницу }

Если пользователь не зарегистрирован, то

else {

формируем НТМL-страницу с сообщением о том, что пользователь не зарегистрирован и кнопкой возврата на главную страницу }

Скрипт izmenenie1.php записывает отредактированную информацию о пользователях в таблицу users и загружает на сервер фотографию и видео пользователя соответственно в папки FOTO_USERS и VIDEO_USERS. Для этого в скрипте мы выполняем следующие действия:

Связываемся с сервером баз данных c указанным именем и паролем

Выбираем базу данных на сервере

Получаем в переменные $f_kod, $f_user, $f_pass, $adres_foto_old, $adres_video_old - код пользователя, имя и пароль пользователя, старые имена файлов фото и видео пользователя:

$f_kod = $_POST['kod'];

$f_user = $_POST['login'];

$f_pass = $_POST['pass'];

$adres_foto_old = $_POST['adres_foto_old'];

$adres_video_old = $_POST['adres_video_old'];

Для фото проверяем загружен ли файл с фотографией с клиентской машины во временную папку сервера

$flag_f=0;

if (is_uploaded_file($_FILES['adres_foto']['tmp_name'])) {

Сохраняем имя временного файла в переменную $tmp_name_foto

$tmp_name_foto=$_FILES['adres_foto']['tmp_name'];

Сохраняем оригинальное имя файла пришедшее с компьютера клиента без цепочки каталогов в переменную $adres_foto

$adres_foto=$_FILES['adres_foto']['name'];

Заменяем пробелы в имени файла на подчеркивания

$adres_foto = str_replace(' ','_',$adres_foto);

Изменяем имя файла на имя пользователя, сохраняя расширение strpos

$p=strpos($adres_foto,'.');

$rash=substr($adres_foto,$p);

$adres_foto=$f_user.$rash; }

Устанавливаем $flag_f в 1, если по каким-то причинам изображение не было загружено на сервер

else {$flag_f=1;}

Если имя файла с фото не передавалось с клиентской машины, то имени файла с фото присваивается старое имя файла с фото.

if ($adres_foto=="") {$adres_foto=$adres_foto_old;}

Для видео проверяем загружен ли файл с видео с клиентской машины во временную папку сервера

$flag_v=0;

if (is_uploaded_file($_FILES['adres_video']['tmp_name'])) {

Сохраняем имя временного файла в переменную $tmp_name_video

$tmp_name_video=$_FILES['adres_video']['tmp_name'];

Сохраняем оригинальное имя файла пришедшее с компьютера клиента без цепочки каталогов в переменную $adres_video

$adres_video=$_FILES['adres_video']['name'];

Заменяем пробелы в имени файла на подчеркивания

$adres_video = str_replace(' ','_',$adres_video);

Изменяем имя файла на имя пользователя, сохраняя расширение strpos

$p=strpos($adres_video,'.');

$rash=substr($adres_video,$p);

$adres_video=$f_user.$rash; }

Устанавливаем $flag_v в 1, если по каким-то причинам изображение не было загружено на сервер

else {$flag_v=1;}

Если имя файла с видео не передавалось с клиентской машины, то имени файла с видео присваивается старое имя файла с видео.

if ($adres_video=="") {$adres_video=$adres_video_old;}

Если получены данные из формы скрипта izmenenie.php

if ($f_kod!='') {

Формируем начало html страницы.

Формируем запрос на изменение значений полей записи информации о пользователе на значения полей формы скрипта izmenenie.php

mysql_query("update $tab_users set password='$f_pass',adres_foto='$adres_foto',adres_video='$adres_video' where kod='$f_kod'") or okno("Сохранение отредактированной записи", "/ADM/PICTURES/pictures_adm_users/ image_fon.jpg", "", "Ошибка", "Ошибка сохранения отредактированной записи", "", "", 1);

Если запрос выполняется и данные заносятся в таблицу успешно, то выводится сообщение об успешном изменение информации.

Если загружен новый файл с фото на сервер

if ($tmp_name_foto!="") {

Удаляем старый файл на сервере

if ($adres_foto_old!="") unlink("..\\FOTO_USERS\\$adres_foto");

Копируем новый файл с фото из временной папки нашего сервера в указанную папку FOTO_USERS

if (copy($tmp_name_foto,"..\\FOTO_USERS\\$adres_foto")) {

Выдаем сообщение о том, что файл фото успешно скопировался

print "Файл с фотографией успешно загружен на сервер!<BR>";

print "Имя файла с фотографией занесено в таблицу users!<BR>"; }

Если во время выполнения запроса на сервере произошел сбой при заливке файла с фотографией с клиента на сервер, то выдаем сообщение о том, что файл не скопировался

else { print "Ошибка копирования файла с фото пользоваетля!"; } }

Если переменная $flag_f равна 1, то выдаем сообщение:

if ($flag_f) {print "Новый файл с фото не загружался!";}

Если запрос выполняется и данные заносятся в таблицу успешно, то выводится сообщение об успешном изменение информации.

Если загружен новый файл с видео на сервер

if ($tmp_name_video!="") {

Удаляем старый файл на сервере

if ($adres_video_old!="") unlink("..\\VIDEO_USERS\\$adres_video");

Копируем новый файл с видео на сервер из временной папки нашего сервера в указанную папку VIDEO _USERS

if (copy($tmp_name_video,"..\\VIDEO_USERS\\$adres_video")) {

Выдаем сообщение о том, что файл видео успешно скопировался

print "Файл с видео успешно загружен на сервер!<BR>";

print "Имя файла с видео занесено в таблицу users!<BR>"; }

Если во время выполнения запроса на сервере произошел сбой при заливке файла с видео с клиента на сервер, то выдаем сообщение о том, что файл не скопировался

else { print "Ошибка копирования файла с видео пользоваетля!"; } }

Если переменная $flag_v равна 1, то выдаем сообщение:

if ($flag_v) {print "Новый файл с видео не загружался!";}

Выводим ссылки для перехода на другие страницы сайта.

<a href=\"izmenenie.php\"> <font size=\"5\">Продолжить изменение данных </font> </a>

<a href=\"../index.php\"> <font size=\"5\">Вернуться на главную страницу </font></a> }

Если файл с фото или видео больше 10 Мб, то генерируем страницу с сообщением об ошибке и кнопками возврата на предыдущие страницы.

else{

print "ОШИБКА!!!";

print "Размер загружаемого файла <br> фото или видео <br> больше, чем 10 Мб!";

print "<form metod=POST action=\"izmenenie.php\" style=\"width: 300\">";

print "<p align=\"center\"><font color=\"#0000FF\">

<input type=\"submit\" value=\"Продолжить изменение данных\" name=\"Vozvrat\">

print "</form>";

print "<form metod=POST action=\"../index.php\" style=\"width: 300\">";

<input type=\"submit\" value=\"Вернуться на главную страницу\" name=\"Vozvrat\">

print "</form>"; };

Скрипт izmenenie1p.php предназначен для подтверждения удаления загруженных на сервер фотографии или видео пользователя соответственно из папки FOTO_USERS и VIDEO_USERS. Для этого в скрипте мы выполняем следующие действия:

Подключаем заголовочные файлы include("../info.dan");

Связываемся с сервером баз данных c указанным именем и паролем

Выбираем базу данных на сервере

Переменные по методу POST

$kod = $_POST['kod'];

$user = $_POST['user'];

$udalit_foto = $_POST['Udalit_foto'];

$udalit_video = $_POST['Udalit_video'];

$adres_foto = $_POST['adres_foto'];

$adres_video = $_POST['adres_video'];

Проверяем, если файл фото не удален, то удаляем

if ($udalit_foto!='') { $udal_obj='фото'; $udalit=$udalit_foto;}

Проверяем, если файл видео не удален, то удаляем

if ($udalit_video!='') { $udal_obj='видео'; $udalit=$udalit_video;}

Формируем html страницу с сообщением о подтверждении удаления файла с фото или файла с видео.

print "<input type='hidden' name ='kod' value=$kod>";

print "<input type='hidden' name ='user' value=$user>";

print "<input type='hidden' name ='adres_foto' value=$adres_foto>";

print "<input type='hidden' name ='adres_video' value=$adres_video>";

print "<input type=\"submit\" value=\"$udalit\" name=\"Delete1\" >

А также кнопками возврата на главную страницу и возврата к изменению данных.

Скрипт izmenenie2.php предназначен для удаления загруженных на сервер фотографии или видео пользователя соответственно из папки FOTO_USERS и VIDEO_USERS. Для этого в скрипте мы выполняем следующие действия:

Подключаем заголовочные файлы include("../info.dan");

Связываемся с сервером баз данных c указанным именем и паролем

Выбираем базу данных на сервере

Переменные по методу POST

$kod = $_POST['kod'];

$user = $_POST['user'];

$udalit = $_POST['Delete1'];

$adres_foto = $_POST['adres_foto'];

$adres_video = $_POST['adres_video'];

Если нажата кнопка Удалить_фото

if ($udalit=="Удалить_фото") {

Если удален файл с фото

if (unlink("..\\FOTO_USERS\\$adres_foto")) {

Обновляем запись в таблице, устанавливая атрибут фото в пустую строку

mysql_query("update $tab_users set adres_foto='' where kod='$kod'") or die("Ошибка сохранения отредактированной записи");

Формируем html страницу с сообщением об успешном удалении файла с фото пользователя на сервере. А также кнопками возврата к изменению данных и возврата на главную страницу. }

Если файл с фотографией не удалилсь, то

else {

формируем html страницу с сообщением об ошибке удаления файла с фото пользоваетля. А также кнопками возврата к изменению данных и возврата на главную страницу. } }

Если нажата кнопка Удалить_видео

if ($udalit=="Удалить_видео") {

Если удален файл с видео

if (unlink("..\\VIDEO_USERS\\$adres_video")) {

Обновляем запись в таблице, устанавливая атрибут видео в пустую строку

mysql_query("update $tab_users set adres_video='' where kod='$kod'") or die("Ошибка сохранения отредактированной записи");

Формируем html страницу с сообщением об успешном удалении файла с видео пользователя на сервере. А также кнопками возврата к изменению данных и возврата на главную страницу. }

Если файл с видео не удалилсь, то

else {

формируем html страницу с сообщением об ошибке удаления файла с видео пользоваетля. А также кнопками возврата к изменению данных и возврата на главную страницу. } }

 

 




Поделиться с друзьями:


Дата добавления: 2015-07-02; Просмотров: 348; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.396 сек.