Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

metoda / Ml_ITIn_2013

.pdf
Скачиваний:
17
Добавлен:
16.03.2016
Размер:
6.66 Mб
Скачать

181

$str=substr($_SERVER['PHP_SELF'],$pos+5);//вырежет только

// имя исполняемого скрипта (например Lab10.php) echo "Имя исполняемого скрипта=".$str;

$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //Например, DOCUMENT_ROOT= W:/home/localhost/www

$ndir="Users1";//имя создаваемой папки $FileName=$DOCUMENT_ROOT."/php/Lab/".$ndir."/users10.txt"; //$FileName=W:/home/localhost/www/php/Lab/Users1

if (!isset($_POST["Submit"]))://первая прорисовка формы

print("<form action=\"Lab10.php\" method=post> Name:<input type=text name=\"UserName\"><br> Password:<input type=password name=\"Password\"><br> <input type=submit name=\"Submit\" value=\"ok\"> </form>\n ");

echo "Введенная информация должна быть сохранена <br>

в каталоге ".$ndir.", в файле users10.txt";

else: //форма ввода уже на экране и нажата OK

if ((strlen($_POST["UserName"]))

and (strlen($_POST["Password"]))):

//&& и and - эквивалентны (логическое И) //echo("Если имя и пароль пользователя указан. Длина

//имени пользователя=".strlen($_POST["UserName"]).

//",Password=".strlen($_POST["Password"]));

$Check=WriteFile($_POST["UserName"],$_POST["Password"], $ndir,$FileName,$DOCUMENT_ROOT);

if ($Check):

print("<br>Ваша регистрация прошла успешно: <p>\n"); ReadFromFile($ndir,$FileName);

else:

print("<br>Регистрация не была выполнена <br>\n");

endif;

else: //при вводе что-то не указали print("Вернитесь и введите значения Alt+Left");

endif;

endif;

182

?>

</body>

</html>

<?PHP

//функции пользователя function

WriteFile($UserName,$Password,$ndir,$FileName,$DOCUMENT_ROOT)

{

//$UserName //$Password

//$ndir - имя создаваемой папки. Например,$ndir="Users1" //$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //Например, DOCUMENT_ROOT= W:/home/localhost/www //$FileName=$DOCUMENT_ROOT."/php/Lab/".$ndir."/users10.txt";

//Назначение:

//Создание папки $ndir по пути:

//W:/home/localhost/www/php/Lab/$ndir

//если она отсутствует, и создание файла $FileName для

//добавления в него информации $UserName и $Password.

//Если файл существует - только добавление информации.

//В качестве разделителей значений атрибутов использовать

//символы "\t".

echo '<br>Write Путь FileName='.$FileName.',<br> UserName='.$UserName.',Password='.$Password.',is_writeable='.is_writeable($Fil eName).' ='.gettype(is_writeable($FileName)).',<br>_SERVER[PHP_SELF]='.$_SERVER[' PHP_SELF'].'<br>';

//Формирование пути для папки с именем $ndir $newdir=$DOCUMENT_ROOT."/php/Lab/".$ndir; $isdir = is_dir($newdir); // Возвращает TRUE

if ($isdir== TRUE):

//print "<br>Каталог //существует:".gettype($isdir).".isdir=".$isdir."<br>"; $nh=($isdir) ? 'True' : 'False';

echo '<br>Каталог '.$newdir.' уже существует isdir='.$nh; else:

print "<br>Каталог '.$newdir.' Не существует."; $rs = @mkdir( $newdir, '0777' );

echo '<br>Каталог создан isdir='.($isdir) ? 'True' : 'False';

endif; //не забывайте точку с запятой if (is_writeable($newdir)):

//Функция is_writeable($newdir)-сообщает, можно ли

183

//записывать в newdir. Возвращает TRUE, если newdir //существует и является доступным (writable). $Open=fopen($FileName,"ab");

if ($Open):

if (filesize($FileName)==0):

echo '<br>Успешное создание и открытие файла'; else:

echo '<br>Успешное открытие файла. Он уже существовал'; endif;

echo "<br>Файл $FileName доступен!<br> Размер файла=".filesize($FileName)." байт <br>";

$Password=md5($Password);//шифровка пароля

fwrite($Open,"$UserName \t $Password \n");

echo '<br>В файл Lab10.txt добавлена запись о пользователе <br> и его зашифрованном пароле.';

fclose($Open); $Directory=TRUE;

else:

print("Невозможно открыть файл $FileName<br>\n"); $Directory=FALSE;

endif;//

else:

print("<br>В файл запрещена запись".$newdir); $Directory=FALSE;

endif; //}

//echo '<br>WriteTo return Directory='.$Directory;

return $Directory;

}

function ReadFromFile($ndir,$FileName)

{//Назначение // Чтение и вывод информации на экран

//$ndir - имя папки (Например,$ndir="Users1")

//$DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT']; //Например, DOCUMENT_ROOT= W:/home/localhost/www //$FileName=$DOCUMENT_ROOT."/php/Lab/users/users10.txt";

$Open=fopen($FileName,"rb");

//echo '<br>ReadFromFile Open='.$Open;

184

if ($Open):

$Data=file($FileName);//закачка файла в массив

echo '<br>Число записей в файле='.count($Data).'<br>'; for ($n=0;$n<count($Data);$n++)

{

$GetLine=explode("\t",$Data[$n]); print("<b>$GetLine[0]</b> $GetLine[1] <br>\n");

}

fclose($Open);// закрытие файла

else:

print("Невозможно открыть файл $FileName<br>\n"); endif;

}//конец функции ReadFromFile

?>

Рис. 3.157. Листинг скрипта с именем Lab10.php.

Пусть пользователь заполнил форму следующим образом (рис. 3.158):

Рис. 3.158. Заполненная форма для скрипта с именем Lab10.php.

185

Тема №11. Создание панели управления файлами

Цель работы: Получение практических навыков по обработке файлов в сценариях.

Задание 1. Разработать форму и сопутствующее ей приложение для панели управления файлами.

Пример формы показан на рис. 3.159, ее обработчик приведен на рис. 3.161 (имя сценария - Lab11.php ). Вариант работы обработчика формы показан на рис. 3.160.

Рис. 3.159. Форма панели управления файлами

Рис. 3.160. Результат работы кода lab11.php

186

Листинг создания и обработки формы lab11.php. html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows1251" />

<title>Lab11 Files manager</title> </head>

<body>

<table border=0 width=80% align=center> <?PHP

if ($_POST["Upload"])

{

$dir = "W:\home\localhost\www\php\Lab\users"; echo("Upload File=".$File);

print("<tr><td colspan=4 align=center>Uploaded file: $File_name</td></tr>");

print("<tr><td colspan=4 align=center>File size: $File_size</td></tr>");

//if (copy($File,"USERS/$File_name")) if (copy($File,$dir."/$File_name"))

{

print("<tr><td colspan=4 align=center>Your file:$File_name, successfully uploaded</td></tr>");

}

else

{

print("Upload was not success");

}

//unlink($File);

unlink($Files);//unlink - удаляет файл.

print("<tr><td colspan=4> </td></tr>");

}

if ($Delete)

{

for($i=0;$i<count($Delete);$i++)

{

if ($Delete[$i]==$Rename[$i])

{ print("<center>It is impossible to delete and rename file in the same time</center>");}

else

{

//if (unlink("USERS/$Delete[$i]")) if (unlink($dir."/$Delete[$i]"))

187

{

print("<tr><td colspan=4 align=center> Your file, $Delete[$i],was deleted</td></tr>");

}

else

{

print("<tr><td colspan=4 align=center> Your file, $Delete[$i], cannot be deleted</td></tr>");

}

}

}

print("<tr><td colspan=4 align=center> </td></tr>");

}

if ($Rename)

{

for($i=0;$i<count($Rename);$i++)

{

if ($Delete[$i]==$Rename[$i]) {}

else

{

//$OldName="USERS/".$Rename[$i]; $OldName=$dir."/".$Rename[$i]; $Newfile=$Rename[$i]; //$New="USERS/".$NewName[$Newfile]; $New=$dir."/".$NewName[$Newfile];

if (rename("$OldName","$New"))

{

print("<tr><td colspan=4 align=center> Your file, $Rename[$i], was renamed in $NewName[$Newfile]</td></tr>");

}

else

{

print("<tr><td colspan=4 align=center> Your file, $Rename[$i], cannot be renamed</td></tr>");

}

}

}

print("<tr><td colspan=4 align=center> </td></tr>");

}

print("<form action=\"lab11.php\" method=post enctype=\"multipart/formdata\">\n");

print("<tr><td><b>File name</b></td>

188

<td><b>File size</b></td> <td><b>Delete</b></td>

<td><b>Rename (Укажите новое имя)</b></td></tr>");

//if ($dir = @opendir("W:\home\localhost\www\php\Lab\users")) $dir = "W:\home\localhost\www\php\Lab\users";

//$Open=opendir("USERS");//функция PHP $Open=opendir($dir);//функция PHP

while ($Files=readdir($Open))

{

//$FileName="USERS/".$Files; $FileName=$dir."/".$Files;

if (is_file($FileName))

{

$Size=filesize($FileName); print("<tr><td>$Files</td>

<td>$Size</td>

<td><input type=checkbox name=\"Delete[]\" value=\"$Files\"</td> <td><input type=checkbox name=\"Rename[]\" value=\"$Files\">

<input type=text name=\"NewName[$Files]\"></td></tr>\n");

}

}

closedir($Open);

print("<tr><td colspan=4 align=center> </td></tr>"); print("<tr><td colspan=4 align=center>

<input type=checkbox name=\"Upload\" value=\"yes\">Upload file<br> <input type=file name=\"File\" size=40><br>

<input type=submit name=\"Submit\" value=\"Ok\"></td></tr>"); print("</form>");

?>

</table>

</body>

</html>

Рис. 3.161. Код lab11.php для реализации менеджера файлов

189

Тема № 12. Работа с базой через монттор MySQL и PhpMyAdmin

Цель работы: Изучение команд MySQL для хранения, выборки и обработки данных с использованием монитора MySQL и средств

PhpMyAdmin.

Интернет ресурс http://www.php.ru/mysql/

Задание 1. Создать базу данных через командную строку

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

В последнем случае можно воспользоваться командным (пакетным) файлом Cmysql.bat, листинг которого приведен ниже (рис. 3.162).

CLS

rem Cmysql.bat Input in MySQL Запуск с любого диска c:\Webservers\usr\local\mysql5\bin\mysql --user=root --character-sets- dir="c:\Webservers\usr\local\mysql5\share\charsets"

Рис. 3.162. Командный файл Cmysql.bat для запуска монитора MySQL.

После запуска Cmysql.bat появится приглашение в MySQL вида: mysql> (рис. 3.163):

Рис. 3.163. Окно монитора MySQL с приглашением mysql > для ввода команды при использовании Cmysql.bat.

190

Если после приглашения указать: create database <имя базы>;

, где <имя базы> - имя новой базы, а ―;‖ – признак конца команды, то если имя такой базы отсутствует в справочнике баз MySQL и присутствует точка с запятой в конце команды, то система создаст новую базу.

Пусть, например, Вы указали в приглашении следующее: mysql> create database books;

(создать базу с именем books (книги)) и нажали Enter (ответ показан ниже).

Рис. 3.164. Окно монитора MySQL после создания базы books.

Появление нового приглашения mysql> означает, что предыдущее действиe выполнено правильно. В скобках указывается время затрачиваемое на выполнение команды.

Если Вы не выйдете из монитора командой Quit, и запуститите

утилиту PhpMyAdmin (указав в адресной строке: рис. 3.165), то реакция утилиты будет подобна, как это показано на рисунке

3.165.

Для правильной работы утилиты, окно монитора MySQL должно быть закрыто командой MySQL exit или Quit.

(выход из монитора MySQL).

Рис. 3.165 12.4. Окно утилиты PhpMyAdmin при неуспешном создании базы books.

Если монитор будет закрыт

, то перевывод окна

браузера приведет к стандартному окну PhpMyAdmin (на рис. 3.166 – показана часть окна PhpMyAdmin и раскрыт список баз, использованных в СУБД MySQL в данный момент времени). Среди доступных баз данных

Соседние файлы в папке metoda