Доброго времени суток, уважаемый подписчик. По эту сторону монитора Андрей Чернобай с рассылкой «PHP-песочница». Сегодня продолжим манипуляции с файлами.
Для чтения из файла есть две возможности. Рассмотрим одну из них – с помощью функции fread.
Функция fread позволяет считывать нужное число байтов из файла, связанного с указателем файла. Записывается это так:
fread (указатель файла, число)
Прежде чем потренироваться с новой функцией, вернёмся к прошлому выпуску, где я предлагал вам самостоятельно добавить в форму поле для ввода e-mail’а и в reg.php – кода для записи e-mail’а в файл.
Я не просто так предлагал это задание, нам это понадобится, когда будем учиться отправлять сообщения на электронный адрес.
Сделали вы это или нет, а я сейчас приведу код для формы в index.php и для reg.php. Кто сделал – проверяйте.
Итак, форма регистрации на сайте:
<form action="reg.php" method="post" name="form1">
<p align="center">Введите в поле своё имя:<br>
<input name="name" type="text"></p>
<p align="center">Введите в поле свой e-mail:<br>
<input name="email" type="text"></p>
<p align="center">Введите в поле свой пароль:<br>
<input name="password" type="password"></p>
<p align="center"><input name="submit" type="submit" value="Зарегистрироваться"></p>
</form>
Файл reg.php:
<?php
if (($name == "") || ($password == "") || ($email == "")) // добавили проверку, заполнен ли электронный адрес
{
echo "<p>Форма заполнена не полностью! Вернитесь, пожалуйста, и заполните все поля формы!</p>";
exit ();
}
else
{
$newfile = fopen($name, "w");
fwrite ($newfile, $password);
fwrite ($newfile, "\n");
fwrite ($newfile, $email); // записали в файл e-mail
fwrite ($newfile, "\n"); // переход на новую строку
fclose ($newfile);
echo "<p>Поздравляем Вас, " .$name. ". Регистрация прошла успешно.</p>";
}
?>
Сохранили изменения в index.php и в reg.php. Обновили индексную страницу в браузере – в форме добавилось новое поле.
Проверьте, как это работает теперь: со всеми полями заполненными и с не заполненными. Полюбопытствуйте, что в папке сайта прибавилось…
А теперь считаем (от слова читать, а не считать) данные из файла с помощью функции fread и выведем результат тут же на страницу.
Вернитесь в reg.php, добавьте код:
<?php
if (($name == "") || ($password == "") || ($email == ""))
{
echo "<p>Форма заполнена не полностью! Вернитесь, пожалуйста, и заполните все поля формы!</p>";
exit ();
}
else
{
$newfile = fopen($name, "w");
fwrite ($newfile, $password);
fwrite ($newfile, "\n");
fwrite ($newfile, $email);
fwrite ($newfile, "\n");
fclose ($newfile);
echo "<p>Поздравляем Вас, " .$name. ". Регистрация прошла успешно.</p>";
}
$file = fopen($name, "r"); //открываем файл имени пользователя для чтения
$n = fread ($file, 100); //считываем из файла, на который указывает переменная $file, сто байтов. Здесь я задал число намеренно значительно большее, чем возможный пароль, чтобы вывести его на страницу весь. Вы же можете поэкспериментировать с разными числами, например, с 1 или 2, а пароль задать длиннее…
echo "<p>Ваш пароль: " .$n. ". Сохраните его.</p>"; //выводим пароль на страницу и предлагаем сохранить его в укромном месте
fclose ($file); //закрываем файл
?>
Сохраним изменения; обновим страницу в браузере; заполним форму; полюбуемся на результат. Если нет ошибок, должно быть выведено сообщение:
С одной стороны, всё работает. Однако, согласитесь, фраза «Ваш пароль: … (пароль) … (e-mail)» выглядит несколько коряво: сказано «Ваш пароль», а следом и «мыло» приписалось. Над этим поработаем в дальнейшем.
А пока всё. Успехов. До встречи в ближайшем выпуске.