Выпуск 6. Работа с файлами в php: функции fopen, fwrite, fclose.
Здравствуйте, вновь Андрей Чернобай с выпуском рассылки «Php-песочница».
Данные, полученные из формы регистрации (см. Выпуск 5 рассылки), лучше сохранить в отдельной файле, чтобы пользователю не приходилось каждый раз регистрироваться заново.
В этой статье познакомимся с несколькими функциями для работы с файлами, а в следующей – применим теорию на практике.
Что значит «работать с файлами» в php? В общем-то, практически то же, что мы делаем с файлами на своём компе в операционной системе Windows: открывать, читать, добавлять/удалять информацию, копировать, закрывать…
Для каждого из названных действий в php есть специальная функция со своими параметрами.
Чтобы начать с файлом работать, его нужно открыть.
Для открытия файла есть функция fopen (имя_файла, режим). То есть, функция здесь – fopen, а то, что в скобках, - параметры функции. Параметр «имя_файла» говорит сам за себя: это не что иное как имя файла, который нужно открыть. Параметр «режим» указывает на действие, для которого открывается файл: только чтение (обозначается буквой r); чтение и запись (обозначается буквой w).
Обратите внимание: если для записи открывается несуществующий файл, он будет создан автоматически.
Для записи дынных в файл применяют функцию fwrite (указатель файла, данные), где fwrite – собственно функция, в скобках – её параметры.
Для закрытия файла используют функцию fclose (указатель файла), где fclose – функция, а в скобках её параметр, указывающий на файл, который нужно закрыть.
Возможно, Вы обратили внимание, что для функции fopen в скобках написано «имя_файла», а для fclose иfwrite – «указатель файла»?
Это не опечатка и не одно и то же.
Имя файла – это настоящее имя, например, у файла index.php имя index.
А что же тогда указатель файла?
Дело в том, что данные из файла читают не «просто так», а всегда помещают их в какую-нибудь переменную. Зачем? Да ведь переменной манипулировать проще, чем данными, которых в открытом файле может быть очень не мало.
Чтобы считать данные из файла в переменную, записывают так:
$имя_переменной = fopen (имя_файла, режим);
Вот эта-то переменная $имя_переменной и есть указатель файла, который мы можем в дальнейшем подставлять в функции fclose иfwrite или ещё куда.
Чтобы Вы не заскучали, ограничимся пока этой теорией. И перейдём к практике.
Работа с файлами в php: продолжаем создавать скрипт регистрации на сайте.
В этой статье добавим в скрипт регистрации, созданный в прошлых выпусках рассылки, новые возможности: сохранять пароль и логин пользователя в файл, используя информацию о работе с файлами.
Откройте в блокноте файл reg.php; он выглядит так:
<?php
if (($name == "") || ($password == ""))
{
echo "<p>Форма заполнена не полностью! Вернитесь, пожалуйста, и заполните все поля формы!</p>";
exit ();
}
else
{
echo "<p>Поздравляем Вас, " .$name. ". Регистрация прошла успешно.</p>";
}
?>
Добавим новый код (зелённым шрифтом):
<?php
if (($name == "") || ($password == ""))
{
echo "<p>Форма заполнена не полностью! Вернитесь, пожалуйста, и заполните все поля формы!</p>";
exit ();
}
else
{
$newfile = fopen($name, "w"); //открыли файл, который носит имя, введённое пользователем в форму для регистрации. Файл открыли для чтения и записи, о чём говорит "w".
fclose ($newfile); //закрыли файл, на который указывает переменная $newfile
echo "<p>Поздравляем Вас, " .$name. ". Регистрация прошла успешно.</p>";
}
?>
Важно! Обратите внимание на точку с запятой после каждой строки!
Сохраним изменения в reg.php, перейдём в браузер, обновим страницу. Заполните поля формы, кликните «Зарегистрироваться».
Во-первых, появится известное нам поздравление об успешной регистрации. Во-вторых, зайдите в папку, где помещаются файлы вашего сайта: там добавился новый файл именем зарегенного пользователя.
Можете открыть этот файл с помощью Блокнота и убедиться, что он пуст. А нам желательно, чтобы в него записывались данные о пользователе. Займёмся этим.
Вернитесь в reg.php и добавьте новый код:
<?php
if (($name == "") || ($password == ""))
{
echo "<p>Форма заполнена не полностью! Вернитесь, пожалуйста, и заполните все поля формы!</p>";
exit ();
}
else
{
$newfile = fopen($name, "w");
fwrite ($newfile, $password); //в открытый файл, на который указывает переменная $newfile, записываем пароль из формы регистрации
fwrite ($newfile, "\n"); //в этом же файле осуществляем переход на новую строку (ну чтобы данные не лепились друг к другу)
fclose ($newfile);
echo "<p>Поздравляем Вас, " .$name. ". Регистрация прошла успешно.</p>";
}
?>
Сохраним изменения в reg.php и обновим страницу в браузере. Заполните форму, кликните по нужной кнопке, порадуйтесь успешной регистрации. Затем сходите в папку сайта и убедитесь, что появился новый файл с именем зарегенного пользователя. А открыв файл в Блокноте, убедитесь, что в него записан теперь и пароль. Что и требовалось.
Вообще-то, для регистрации, кроме логина и пароля, у нового пользователя обычно требуют e-mail. Предлагаю вам самостоятельно добавить новое поле в форму регистрации, а потом добавить новый код в reg.php, чтобы в файл записывался вместе с паролем и e-mail.
Успехов. И до встречи в следующем выпуски рассылки «PHP-песочница».