- •Лабораторный практикум №2 Модуль 6. Работа с файловой системой Режимы работы с файлами
- •Функции работы с файлами
- •Пример работы с файлом
- •Загрузка файла на сервер. Пример.
- •Функции для работы с каталогами
- •Задания к модулю 6
- •Модуль 7. Cookies и сессии php Работа с cookies (печеньками)
- •Работа с сессиями
- •Задания к модулю 7
Пример работы с файлом
Пример 1.
Задание: создать журнал посещения сайта.
Реализация:
Главная страница:
Мы открываем файл режимом «a+», что означает следующее:
файл будет открыт для работы в текстовом режиме
данные будут записываться в конец файла
если файл не существует, он будет создан
При открытии файла мы получаем его целочисленный дескриптор, который будем использовать при дальнейшей работе.
Далее мы записываем в файл три строки.
Дата и время
IP-адрес
Откуда пришел (будет пустым, если прямой заход на сайт, т.е. адрес был набран вручную)
Обратите внимание, что для перехода на новую строку используется последовательность «\n». Ее следует писать в двойных кавычках, тогда она заменится на спецсимвол переноса строки. Если же ‘\n’ написать в апострофах, то это будет просто символ «\», за которым следует символ «n». Наконец, когда работа с файлом завершена, его следует закрыть. Для этого служит функция fclose().
Страница журнала посещений:
Необходимо создать две статичные странички – Сайт1 и Сайт 2 с ссылкой на главную страницу для отслеживания посещаемости.
Загрузка файла на сервер. Пример.
Задание: Реализовать загрузку файла на сервер.
Реализация:
Для того, чтобы загрузить файл на сервер, надо создать html-форму. Для того, чтобы с помощью этой формы можно было загружать файлы, она должна содержать атрибут enctype в теге form со значением multipart/form-data, а также элемент input типа file.
Вся информация о загруженном на сервер файле содержится в глобальном массиве $_FILES.
Массив $_FILES всегда имеет следующие элементы:
$_FILES['myfile']['name'] - имя, которое имел файл на машине клиента.
$_FILES['myfile']['type'] - mime-тип отправленного файла, если браузер предоставил эту информацию.
$_FILES['myfile']['size'] - размер загруженного файла в байтах.
$_FILES['myfile']['tmp_name'] - временное имя файла, под которым он был сохранен на сервере.
$_FILES['myfile']['error'] - код ошибки, появившейся при загрузке.
Здесь 'myfile' - это имя элемента формы, с помощью которого была произведена загрузка файла на сервер. То есть оно может быть другим, если элемент формы назвать иначе. Но вот другие ключи ( name, type и т. д.) остаются неизменными для любой формы.
Ошибок при загрузке в PHP выделяют пять типов и соответственно $_FILES['myfile']['error'] может иметь пять значений:
0 - ошибки не произошло, файл загружен успешно
1 - загружаемый файл превышает размер, установленный директивой upload_max_filesize в файле настроек php.ini
2 - загружаемый файл превышает размер, установленный элементом MAX_FILE_SIZE формы html
3 - файл был загружен частично
4 - файл загружен не был
По умолчанию загруженные файлы сохраняются во временной директории сервера, если другая директория не указана с помощью опции upload_tmp_dir в файле настроек php.ini. Переместить загруженный файл в нужную директорию можно с помощью функции move_uploaded_file().
Функция move_uploaded_file() имеет следующий синтаксис:
bool move_uploaded_file (временное_имя_файла, место_назначения )
Эта функция проверяет, действительно ли файл, обозначенный строкой временное_имя_файла, был загружен через механизм загрузки HTTP методом POST. Если это так, то файл перемещается в файл, заданный параметром место_назначения (этот параметр содержит как путь к новой директории для хранения, так и новое имя файла).
Если временное_имя_файла задает неправильный загруженный файл, то никаких действий произведено не будет, и move_uploaded_file() вернет FALSE. То же самое произойдет, если файл по каким-то причинам не может быть перемещен. В этом случае интерпретатор выведет соответствующее предупреждение. Если файл, заданный параметром место_назначения,существует, то функция move_uploaded_file() перезапишет его.
Обработчик:
