Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Vtoraya_chast_uchebnika_po_WWW_Okonchat_variant...doc
Скачиваний:
33
Добавлен:
27.09.2019
Размер:
6.06 Mб
Скачать

5.3.4. Основные операции с открытыми файлами

С открытыми файлами выполняются две основные операции - чтение и запись. Как правило, рекомендуется проверить, существует ли файл и разрешена ли для него запись. Дело в том, что процедуры изменения файлов скриптами при работе в WWW надо контролировать. Иначе, можно легко представить себе, как быстро возникнет хаос в Интернете даже без помощи хакеров. Для этого, каждому файлу задаются определённые характеристики, называемые правами доступа к нему со стороны скриптов, а точнее тех пользователей, которые эти скрипты пишут. Соответствующие детали подробно описываются в разделе 5.4.

В данном разделе просто опишем функции, позволяющие распознавать права доступа, установленные для файла.

5.3.4.1. Запись в файл

Функция is_writeable( ) позволяет убедиться в том, что файл существует и для него разрешена операция записи. Возможность записи проверяется как для файла, так и для каталога.

Синтаксис функции is_writeable( ):

bool is_writeable (string файл)

Для записи в файл, задаваемый файловым дескриптором, содержимого строковой переменной используется функция fwrite ( ).

Её синтаксис:

Int fwrite(int дескриптор, string stroka[, int длина])

Функция осуществляет запись строки «строка» в файл, заданный своим дескриптором. Если при вызове функции передается необязательный параметр «длина», запись останавливается либо после записи указанного количества символов, либо при достижении конца строки.

Функция возвращает количество записанных байт или FALSE в случае возникновения ошибки. В тех операционных системах, в которых текстовые и двоичные файлы различаются (например, Windows) файл должен быть открыт в двоичном режиме.

Проверка возможности записи в файл продемонстрирована в следующем примере:

<?php

$filename = "somefile.txt";

// Если файл существует и в него возможна запись

if ( is_writeable($filename)

// Открыть файл и установить указатель текущей позиции в конец файла

{

$fh = fopen($filename, "a+");

// Файл открывается для чтения и записи,

// указатель помещается в конец файла.

// Если файла нет, то будет предпринята попытка его создания

// Записать содержимое $data в файл

$success = fwrite($fh, $data);

// Закрыть файл

fclose($fh);

}

else

echo "Нельзя открыть файл для записи";

?>

Функция имеет псевдоним - функцию fputs( ), которая может использоваться так же как fwrite( ), и имеет такой же синтаксис.

5.3.4.2. Запись файла целиком

Для формирования файла необязательно открывать его, записывать данные и закрывать. Функция file_put_contents позволяет использовать сокращённый способ. Синтаксис функции приведён ниже:

file_put_contents(string filename, string data [, int flags [resource context]])

Здесь:

  1. filename – имя файла, в который будет производиться запись данных;

  2. data – текстовая строка для записи в файл;

  3. flags – необязательный параметр, который задаёт дополнительные режимы открытия файла.

Его возможные значения:

    1. FILE _USE_INCLUDE_PATH задаёт поиск файла по каталогам, указанным в параметре include_path конфигурационного файла php.ini.

    2. FILE_APPEND включает режим добавления. Если его не выставить, то по умолчанию существующий файл будет перезаписан.

    3. Сумма двух первых значений.

  1. context – необязательный параметр задаёт контекст файла, предназначающийся для дополнительной обработки потоков данных в файл или из файл. На уровне данного учебного пособия эта возможность не рассматривается.

Главной особенностью этой функции является то, что она осуществляет последовательное открытие файла как функция fopen, запись в него - как fwrite и закрытие - как fclose.

При этом не требуется работать с дескриптором файла.