Учебное пособие 1077
.pdfФГБОУ ВО «Воронежский государственный технический университет»
Кафедра автоматизированных и вычислительных систем
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ PHP
МЕТОДИЧЕСКИЕ УКАЗАНИЯ
к выполнению лабораторных работ № 13-14 по дисциплине «Проектирование и разработка Web-приложений» для студентов направления
09.03.01 «Информатика и вычислительная техника», профиля «Вычислительные машины, комплексы, системы и сети» очной формы обучения
Воронеж 2016
Составители: канд. техн. наук М.Ю. Сергеев канд. техн. наук Т.И. Сергеева
УДК 681.32
Основы программирования на языке PHP: методические указания к выполнению лабораторных работ № 13-14 по дисциплине «Проектирование и разработка Web-приложений» для студентов направления 09.03.01 «Информатика и вычислительная техника», профиля «Вычислительные машины, комплексы, системы и сети» очной формы обучения / ФГБОУ ВО «Воронежский государственный технический университет»; сост. М.Ю. Сергеев, Т.И. Сергеева. Воронеж, 2016. 58 с.
Методические указания содержат теоретические и практические сведения для разработки элементов веб-страниц с помощью языка программирования PHP.
Предназначены для студентов четвертого курса. Методические указания подготовлены в электронном ви-
де и содержатся в файле Web_prog_3_2.pdf.
Табл. 7. Ил. 7. Библиогр.: 4 назв.
Рецензент канд. техн. наук, доц. О.Б. Кремер
Ответственный за выпуск зав. кафедрой д-р техн. наук, проф. С.Л. Подвальный
Издается по решению редакционно-издательского совета Воронежского государственного технического университета
©ФГБОУ ВО «Воронежский государственный технический университет», 2016
ВВЕДЕНИЕ
При выполнении данных лабораторных работ студенты должны научиться работать с файлами и формами в РНР, ознакомиться с основами создания базы данных средствами MySQL и освоить технологии работы с базой данных MySQL в PHP.
1. ЛАБОРАТОРНАЯ РАБОТА № 13. РАБОТА С ФАЙЛАМИ И ВЕБ-ФОРМАМИ В PHP
1.1. Общие методические указания по выполнению лабораторной работы
Цели работы:
–освоить работу с файлами с использованием средств языка PHP;
–изучить методы получения и передачи данных веб-
форм.
Среда выполнения и отладки:
Текстовый редактор Notepad++, веб-браузер (Firebox, Internet Explorer, Opera или др.).
1.2. Теоретические сведения
Проверка существования файла
Чтобы проверить факт существования файла, можно воспользоваться функцией file_exists(), которая возвращает либо TRUE, либо FALSE и используется следующим образом:
if (file_exists("testfile.txt")) echo "Файл существует"; else echo "Файл \"testfile.txt\" не найден";
Создание файла
Для демонстрации процесса создания простого текстового файла рассмотрим следующий пример:
<?php
$fh=fopen("testfile.txt", "w") or exit("Создать файл не удалось");
$text = <<<_END
Строка 1 Строка 2 Строка 3
_END;
fwrite($fh, $text) or die("Сбой записи файла"); fclose($fh);
echo "Файл 'testfile.txt' записан успешно" ?>
Если данный код будет запущен через браузер, то при его успешном выполнении будет получено следующее сообщение: «Файл 'testfile.txt' записан успешно». В таком случае новый файл будет создан в той же папке, что и файл с программным кодом. В сам файл будет записано содержимое переменной $text:
Строка 1 Строка 2 Строка 3
В данном примере показана типовая последовательность работы с файлом:
а) работа начинается с открытия файла с помощью вызова функции fopen();
б) после открытия файла можно вызывать другие функции (в данном случае fwrite(), но можно также использовать функции для чтения или других действий);
в) работа завершается закрытием файла (функция fclose()).
2
Каждому открытому файлу требуется поставить в соответствие файловую переменную, через которую PHPпрограмма управляет им. В данном примере это переменная $fh, которой присваивается значение, возвращаемое функцией fopen().
В случае сбоя функция fopen() возвращает значение FALSE. В таком случае вызывается функция exit(), которая завершает программу и выдает пользователю сообщение об ошибке.
Функция fopen() использует два параметра. Первый – это имя файла, второй – режим его открытия. В данном случае используется режим “w”, предписывающий функции открыть файл для записи. Список всех возможных режимов приведен в табл. 1.
|
|
Таблица 1 |
|
Возможные режимы работы функции fopen() |
|
Режим |
|
Описание |
‘r’ |
|
Открывает файл только для чтения; помещает ука- |
|
|
затель в начало файла. |
|
|
|
‘r+’ |
|
Открывает файл для чтения и записи; помещает |
|
|
указатель в начало файла. |
‘w’ |
|
Открывает файл только для записи; помещает ука- |
|
|
затель в начало файла и обрезает файл до нулевой |
|
|
длины. Если файл не существует – пробует его со- |
|
|
здать. |
‘w+’ |
|
Открывает файл для чтения и записи; помещает |
|
|
указатель в начало файла и обрезает файл до нуле- |
|
|
вой длины. Если файл не существует – пытается его |
|
|
создать. |
|
|
|
‘a’ |
|
Открывает файл только для записи; помещает ука- |
|
|
затель в конец файла. Если файл не существует – |
|
|
пытается его создать. |
‘a+’ |
|
Открывает файл для чтения и записи; помещает |
|
|
указатель в конец файла. Если файл не существует - |
|
|
пытается его создать. |
|
3 |
|
Продолжение табл. 1 |
‘x’ |
Создаёт и открывает только для записи; помещает |
|
указатель в начало файла. Если файл уже существу- |
|
ет, вызов fopen() закончится неудачей, вернёт |
|
FALSE и выдаст ошибку уровня E_WARNING (не- |
|
фатальная ошибка). Если файл не существует, по- |
|
пытается его создать. |
‘x+’ |
Создаёт и открывает для чтения и записи; иначе |
|
имеет то же поведение что и 'x'. |
‘c’ |
Открывает файл только для записи. Если файл не |
|
существует, то он создается. Если же файл суще- |
|
ствует, то он не обрезается (в отличие от 'w'), и вы- |
|
зов к этой функции не вызывает ошибку (также как |
|
и в случае с 'x'). Указатель на файл будет установ- |
|
лен на начало файла. |
‘c+’ |
Открывает файл для чтения и записи; иначе имеет |
|
то же поведение, что и 'c'. |
Также можно указывать 'b' и 't', если есть необходимость напрямую указать в каком режиме нужно работать с файлом – в бинарном или текстовом. Их можно использовать в комбинации с любыми другими режимами, например 'wb'.
Чтение из файлов
Для чтения строки из текстового файла можно воспользоваться функцией fgets(), как в примере ниже:
<?php
$fh=fopen("testfile.txt", "r") or exit("Не удалось открыть файл");
$line = fgets($fh); fclose($fh);
echo $line; ?>
4
Если используется файл из предыдущего примера, то из него будет получена первая строка:
Строка1
Можно попробовать вывести на экран все содержимое текстового файла построчно:
<?php
$fh=fopen("testfile.txt", "r") or exit("Не удалось открыть файл");
while (!feof($fh))
{
$line = fgets($fh); echo $line.'<br>';
}
fclose($fh); ?>
Здесь используется функция feof(), которая возвращает значение TRUE, если достигнут конец файла.
Можно также извлечь из файла всю информацию или нужное количество байт с помощью функции fread():
<?php
$fh = fopen("testfile.txt", "r") or exit("Не удалось открыть файл");
$line = fread($fh, filesize("testfile.txt")); echo $line;
fclose($fh); ?>
В качестве параметров функции fread() указываются файловая переменная и количество байтов, которое нужно считать
5
из файла (в данном случае файл считывается целиком – для этого используется функция filesize()).
Если не использовать файловую переменную, то можно просто считать весь текст из файла с помощью функции file_get_contents():
echo "<pre>";
$line = file_get_contents("testfile.txt"); echo $line;
echo "</pre>";
Копирование файлов
Можно полностью копировать содержимое одного файла в другой с помощью функции copy():
<?php
if (!copy("testfile.txt","testfile2.txt"))
echo "Копирование невозможно";
else
echo "Файл успешно скопирован в 'testfile2.txt'";
?>
В случае удачного копирования файла в каталоге, где находится файл с PHP-кодом, появится текстовый файл textfile2.txt.
Перемещение (переименование) файла
Для перемещения файла его следует переименовать с помощью функции rename():
<?php
if (!rename("testfile2.txt","testfile2.new")) echo "Переименование невозможно";
else
echo "Файл успешно переименован
6
в 'testfile2.new'";
?>
Функцию для переименования можно применять и к каталогам. Для того, чтобы избежать предупреждений при отсутствии исходных файлов, сначала для проверки их существования можно вызвать функцию file_exists().
Удаление файла
Для удаления файла из файловой системы можно воспользоваться функцией unlink():
<?php
if (!unlink("testfile2.new"))
echo "Удаление невозможно";
else
echo "Файл 'testfile2.new' успешно удален";
?>
Обновление файлов
Довольно часто возникает необходимость добавления содержимого уже в существующий файл. Для этого можно воспользоваться одним из режимов добавления данных (таблица 1) или же выбрать режим, поддерживающий запись, и просто открыть файл для чтения и записи и переместить указатель файла в нужное место, с которого необходимо вести запись или чтение.
Указатель файла – это позиция внутри файла, с которой будет осуществлен очередной доступ к файлу при чтении или записи.
Рассмотрим в качестве примера следующий код:
<?php
$fh = fopen("testfile.txt", "r+") or exit ("Сбой открытия файла");
7
$text = "Строка 4"; fseek($fh, 0, SEEK_END);
fwrite($fh, "$text") or exit("Сбой записи в файл"); fclose($fh);
echo "Файл 'testfile.txt' успешно обновлен"; ?>
Файл testfile.txt открывается для чтения и записи, для чего указывается режим работы 'r+', в котором указатель устанавливается в самое начало файла. В переменную $text, записывается содержимое добавляемой строки. После этого вызывается функция fseek(), чтобы переместить указатель файла в самый конец, куда затем добавляется строка из переменной $text.
Получившийся в итоге файл имеет следующий вид:
Строка 1 Строка 2 Строка 3 Строка 4
В данном примере функции fseek(), кроме описателя файла $fh, были переданы еще два параметра – 0 и SEEK_END. Параметр SEEK_END предписывает функции переместить указатель файла в его конец, а параметр 0 показывает, на сколько позиций нужно вернуться из этой позиции (В примере используется значение 0, потому что указатель должен оставаться в самом конце файла).
С функцией fseek() можно использовать еще два режима установки указателя SEEK_SET и SEEK_CUR. Режим SEEK_SET предписывает функции установку указателя файла на конкретную позицию, заданную предыдущим параметром (одна позиция – один байт). Поэтому в следующем примере указатель файла перемещается на позицию 18:
fseek($fh, 18, SEEK_SET);
8