3-11-2009, 07:16-Khromov-WM
Рубрика: PHP

Здравствуйте! В сегодняшней статье мы с вами познакомимся с таким отличным свойством PHP как работой с файлами. Для начала нам нужен: веб - сервер(Денвер), Notepad++(или альтернатива) и естественно эта статья на ForNovice.ru. Поехали!
Итак, давайте разберемся, каким образом(точнее: каким алгоритмом, но так не всем понятно) мы будем работать с файлами. Почти всегда алгоритм таков:
Открыть файл -> Записать или прочитать из него данные -> Закрыть файл(хотя это делается автоматически, но все-же рекомендуется). Итак, для начала изучим функции:
fopen(), fread(), fwrite(), fclose().
Первая функция: fopen() – открывает файл и выглядит примерно так:
<?php
$fp = fopen(“file”, “a+”);
?>
Наверное, вы сейчас задались вопросом, что такое a+? Вот что:
Это режим, в котором должен быть открыт файл.
- r - Файл открывается только для чтения. Если файла не существовало, будет ошибка. После удачного открытия файла указатель устанавливается в начало файла.
- r+ - файл открывается одновременно и на чтение и на запись. Указатель устанавливается на начало. Если файла не существовало, возвращается false. Но если в момент записи указатель установлен где-то посередине файла, то данные запишутся поверх уже существующих.
- w- Создаётся новый пустой файл. Если на момент вызова уже существовал такой файл, то он уничтожается.
- w+ - аналогичен r+, но если файла не существовало, он создается. Можно работать как в режиме записи так в режиме чтения. Если файл существовал, то его содержимое уничтожается.
- а- открывает существующий фал в режиме записи и при этом двигает указатель на последний байт файла. Этот режим используют, когда нужно что-то дописать. Вызов проваливается если файла не существовало.
- а+ - открывает файл в режиме чтения и записи. Указатель устанавливается в конец файла при этом, не уничтожая содержимое файла. Отличается он а тем, что если до вызова файла не существовало, то он создается.
Ну, разобрались? Поехали дальше!
Теперь, когда в нашем файле будет написано например «Привет мир, я вернулся!» то чтобы вывести эту строчку именно из файла, то нужно проделать следующее(на деле все объясню):
<?php
$file = "hello.txt";
$fp = fopen($file, "r"); // на всякий случай
$fr = fread($fp, 1024);
echo $fr;
$fc = fclose($fp);
?>
И в вашем браузере сразу выведется надпись, которую вы запишите в файл.
Теперь давайте попробуем записать данные в файл. Например IP и дату и время. Поехали.
<?php
$file = "unit.txt";
$fp = fopen($file, "a+"); // на всякий случай
if (!fp)
{
$fp2 = fopen($file, "w+");
echo "Файл $file не был обнаружен и был создан!";
}
$fw = fwrite($fp, "".$_SERVER['REMOTE_ADDR']." | ".date("d.m.Y - H:i:s")."<br>\n");
readfile($file);
$fc = fclose($fp);
?>
Надеюсь, что все предельно ясно и понятно. Сейчас объясню построчно:
3-я строка – мы объявляем переменную, которая содержит функцию fopen() и переменная $file введена для удобства.
4,5,6,7,8-ые строки это логическое выражение, благодаря ему вам совсем необязательно создавать нужный файл, он самостоятельно создастся скриптом. Далее пока-что самое непонятное – запись данных в файл.
Напомню:
$_SERVER[‘REMOTE_ADDR’] – это определение ip адреса посетителя.
date("d.m.Y - H:i:s") – это текущее время и дата. Тут информация по работе с ней
Внимание!!!
Если вы пишите данные в файл, то обязательно нужно указать переменную, где вы открывали файл, а не указывать его имя!
Таким образом я уже объяснил вам три режима для работы с файлами: r – когда файл открыт для чтения, a+ когда в файле данные дописываются в конец, и w+ когда можно легко создать файл.
Функция readfile() использовалась мной для рациональности. Нет смысла считывать строки и символы файла, его можно просто прочитать данной функцией. Таким образом напрашивается небольшой вывод: работать с файлами в php не так то и сложно и нудно. Довольно весело это иногда бывает. Так что, если ваш сервер не поддерживает MySQL тогда смело переходите к данным из файла, это намного проще и лучше.
Что вы должны знать на данный момент? Решать вам, лично я хотел рассказать о работе с файлами в PHP. Вы наверное читали только те места, которые вам нужны. Но для этого я и пишу статьи. На этом прощаюсь, посещайте наш сайт ForNovice.ru. И вы всегда увидите что-нибудь новенькое. До новых встреч!
Иван Хромов. 3.10.2009 год.
Скачать статью в pdf и примеры к ней:


