Объектно-ориентированный язык сценариев php, страница 16

$p = fopen("guess.txt", "r") or die ("Could'n open file!");

while(feof($p) == false)

{

$line = fgets($p,1024);

print "$line<br>";

}

?>

Рассмотрим это пример детально. В первой строчке файл открывается для чтения guess.txt (пусть там все та же фраза про крушения, записанная в две строки), полученный указатель сохраняется в переменной $p. Однако в этой же строчке используется ранее незнакомый момент - or die("Could'n open file!"). Функция die() просто выводит свой аргумент на экран браузера и прекращает выполнение программы.

Таким образом, всю сточку целиком можно понять так, если открыть файл не удастся, то есть если функция fopen() вернет не указатель на файл, а значение false, на экран будет выведена строка Could'n open file! и работа программы закончится. Если все пройдет гладко и файл будет открыт без проблем, функция die() будет просто проигнорирована.

Во второй строчке вы можете наблюдать цикл while. Цикл будет работать до тех пор, пока не будет достигнут конец файла. Для определения конца файла используется функция feof(). Данная функция возвращает true при достижении конца файла и false – в противном случае. В качестве аргумента мы передаем этой функции переменную $p, содержащую указатель на наш файл. Таким образом, всю строчку можно понять следующим образом: до тех пор пока функция feof() возвращает значение ложь (иначе говоря, до тех пор пока мы не дошли до конца файла), цикл while будет выполняться.

В теле цикла выполняются следующие действия: мы читаем с помощью функции fgets() строчку или 1024 байта. Если конец строки не был достигнут, мы присваиваем прочитанную строку переменной $line и выводим ее на экран, добавляя тэг <br> для удобства чтения. Теперь результат работы программы будет выглядеть так:

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

Запись в файл с помощью функции fwrite()

У функции fwrite() всего два аргумента – указатель на файл и строка. Функция просто записывает эту строку в файл.

Для иллюстрации работы функции fwrite() немного модифицируем пример 6.1 из предыдущей темы. В этом примере мы анализировали правильность введенного пароля. Теперь мы будем записывать время всех неудачных попыток в текстовый файл (log.txt).

HTML-форма для ввода пароля доступа (form2.html)

 

<html>

<head>

<title>  Form </title>

 </head>

 <body>

<form action="primer7_8.php" method="GET">

Введите пароль: <input Type="password" Name = "pas" Size="10" Maxlength="10">

<input type="submit" value="Проверка пароля">

</form>

 </body>

</html>

 

Никаких изменений в самой форме ввода сделано не будет, они не нужны.

 

Пример 7.8 Обработчик HTML-формы для ввода пароля доступа (файл primer7_8.php)

 

<?php

if($_GET['pas']== "17er0482")

{

$fp = fopen("new.txt", "a") ;

fwrite( $fp, "Password OK\n");

fclose( $fp );

print "Заходи!";

}

else

{

$fp = fopen("new.txt", "a") ;

fwrite( $fp, "Password error ---->>> $pas\n");

fclose( $fp );

header("Location: form2.html");

}

?>

 

Программа проверяет правильность введенного пароля. Если пароль правильный, файл new.txt открывается в режиме добавления и в него с помощью функции fwrite() записывается строка Password OK. На экран выводится сообщение "Заходи!".

Если пароль неправильный, в тот же файл записывается строка Password error ---->>> (\n – это символ новой строки), при этом указывается, какое именно значение ввел пользователь в строчке пароля. С помощью функции header() с параметром Location пользователю отправляется исходная форма для ввода, чтобы он попробовал ввести пароль еще раз.

 

Задание для самопроверки

Создайте форму для сборки анкетных данных студента. Все данные, полученные из формы должны сохраняться в некотором файле.