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

Учебное пособие 1077

.pdf
Скачиваний:
4
Добавлен:
30.04.2022
Размер:
750.04 Кб
Скачать

ФГБОУ ВО «Воронежский государственный технический университет»

Кафедра автоматизированных и вычислительных систем

ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ 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