- •Тема 1 Основы cgi-программирования
- •1.1 Методы передачи данных
- •1.2 Передача документа пользователю
- •1.3 Передача информации cgi-сценарию
- •Тема 2 Характеристика языка php
- •2.1 Принцип работы php
- •2.2 Переменные, константы, выражения
- •Тема 3 Работа с данными формы
- •3.1 Передача данных
- •3.2 Трансляция полей формы в переменные
- •Тема 4 Конструкции языка
- •4.1 Условные инструкции
- •4.2 Инструкции циклов
- •4.3 Инструкции включения
- •Тема 5 Ассоциативные массивы
- •5.1 Списки и ассоциативные массивы
- •5.2 Операции над массивами
- •5.3 Списки и строки
- •5.4 Сериализация
- •Тема 6 Работа с массивами
- •6.1 Сортировка массивов
- •6.2 Функции для работы с массивами
- •Тема 7 Функции и области видимости
- •7.1 Формат определения функции, передача параметров
- •7.2 Глобальные, локальные, статические переменные
- •7.3 Рекурсия, вложенные и условно-определяемые функции
- •7.4 Передача функций по ссылке и возврат функцией ссылки
- •Тема 8 Строковые функции
- •8.1 Функции работы со строками
- •8.2 Работа с блоками текста
- •Тема 9 Математические функции
- •9.1 Встроенные константы
- •9.2 Встроенные функции
- •Тема 10 Работа с файлами и каталогами,
- •10.1 Функции работы с файлами
- •10.2 Блокирование файла
- •10.3 Функции работы с каталогами
- •10.4 Запуск внешних программ
- •Тема 11 Работа с датами и временем,
- •11.1 Представление времени в формате timestamp
- •11.2 Работа с датами, григорианский календарь
- •11.3 Посылка писем через php
- •Тема 12 Работа с www
- •12.1 Установка заголовков ответа
- •12.2 Работа с Cookies
- •Тема 13 Управление интерпретатором
- •13.1 Управление интерпретатором
- •13.2 Управление сессиями
- •Тема 14 Работа с базой данных mysql
- •14.1 Соединение с базой данных
- •14.2 Выполнение запросов к базе данных
- •Тема 15 Загрузка файлов на сервер
- •15.1 Multipart-формы, тег выбора файла
- •15.2 Поддержка закачки в php
- •Учебное издание
- •Разработка программного обеспечения на платформе net: php.Net
- •246019 Г. Гомель, ул. Советская, 104
10.3 Функции работы с каталогами
С точки зрения операционной системы каталоги – это те же самые файлы, только со специальным именем. То есть директорию можно представить себе как файл, в котором хранятся имена и местоположения других файлов и каталогов. С каждым процессом (в частности, и с работающим сценарием) ассоциирован свой так называемый текущий каталог. Все действия по работе с файлами и каталогами осуществляются по умолчанию именно в нем. Например, если открываем файл, указав только его имя, PHP будет искать этот файл именно в текущем каталоге.
Функции для работы с каталогами:
bool mkdir(string $name, int $perms)
Создает каталог с именем $name и правами доступа $perms. Права доступа для каталогов указываются точно так же, как и для файлов. Чаще всего значение $perms устанавливают равным 0770 (предваряющий ноль обязателен – он указывает PHP на то, что это – восьмеричная константа, а не десятичное число). Пример:
mkdir("my_directory",0755);
// создает подкаталог в текущем каталоге
mkdir("/data"); // создает подкаталог data в корневом каталоге
В случае успеха функция возвращает true, иначе – false. Пользователь не может создать подкаталог в родительском каталоге, права на запись в который у него отсутствуют.
Атрибуты доступа 0770 означают «доступен для чтения, записи и исполнения для владельца и его группы». Право на «исполнение» показывает, что пользователь сможет просмотреть содержимое каталога.
bool rmdir(string $name)
Удаляет каталог с именем $name. В случае успеха возвращает true, иначе – false.
bool chdir(string $path)
Сменяет текущий каталог на указанный. Если такого каталога не существует, возвращает false. Параметр $path может определять и относительный путь, задающийся от текущего каталога. Примеры:
chdir("/tmp/data"); // переходим по абсолютному пути
chdir("./somathing"); // переход в подкаталог текущего каталога
chdir("something"); // то же самое
chdir(".."); // переходим в родительский каталог
Возвращает полный путь к текущему каталогу, начиная от «корня» (/). Если такой путь не может быть отслежен, возвращает false.
Работа с записями. Описываются функции, которые позволяют узнать, какие объекты находятся в указанном каталоге. Механизм работы этих функций базируется на тех же принципах, что и применяемых для файловых операций: сначала каталог открывается, затем из него производится считывание записей, и под конец каталог нужно закрыть.
int opendir(string $path)
Открывает каталог $path для дальнейшего считывания из него информации о файлах и подкаталогах и возвращает его идентификатор. Дальнейшие вызовы readdir() с идентификатором в параметрах будут обращены именно к этому каталогу. Функция возвращает false, если произошла ошибка.
string readdir(int $handle)
Считывает очередное имя файла или подкаталога из открытого ранее каталога с идентификатором $handle и возвращает его в виде строки. Порядок следования файлов в каталоге зависит от операционной системы. Вместе с именами подкаталогов и файлов будут также получены два специальных элемента: это (ссылка на текущий каталог) и .. (ссылка на родительский каталог). В подавляющем большинстве случаев нам нужно их игнорировать. Если в каталоге все файлы уже считаны, функция возвращает ложное значение. Пример:
$d=opendir("somewhere");
while(($e=readdir($d))!==false) {...}
Оператор !== позволяет точно проверить, была ли возвращена величина false.
void closedir(int $handle)
Закрывает ранее открытый каталог с идентификатором $handle. Можно не закрывать каталоги, т. к. это делается автоматически при завершении программы, однако лучше все-таки это сделать.
void rewinddir(int $handle)
Функция «перематывает» внутренний указатель открытого каталога на начало. После этого можно воспользоваться readdir(), чтобы заново начать считывать содержимое каталога.
