﻿<?php
echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n";
echo "<HTML><HEAD><TITLE></TITLE>\n";
echo "<META content=\"TEXT/HTML; CHARSET=WINDOWS-1251\" http-equiv=CONTENT-TYPE>\n";
echo "<META content=\"Microsoft FrontPage 4.0\" name=GENERATOR>\n";
echo "<STYLE></STYLE>\n";
echo "</HEAD>\n";
echo "<body background=../FON.JPG>\n";
echo "<ul>\n";
echo "\n";
echo "  <li><a href=\"#a\"><font face=\"Times New Roman\" size=3>Глава 7.\n";
echo "    Файловый ввод/вывод и файловая система</font></a> </li>\n";
echo "  <ul>\n";
echo "    <li><a href=\"#b\"><font face=\"Times New Roman\" size=\"3\">Проверка\n";
echo "      существования и размера файла</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#c\"><font face=\"Times New Roman\" size=\"3\">Открытие и\n";
echo "      закрытие файлов</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#d\"><font face=\"Times New Roman\" size=\"3\">Запись в\n";
echo "      файл</font></a></li>\n";
echo "    <li><a href=\"#e\"><font face=\"Times New Roman\" size=\"3\">Чтение из\n";
echo "      файла</font></a></li>\n";
echo "    <li><a href=\"#f\"><font face=\"Times New Roman\" size=\"3\">Чтение\n";
echo "      файла в массив</font></a></li>\n";
echo "    <li><a href=\"#g\"><font face=\"Times New Roman\" size=\"3\">Перенаправление\n";
echo "      файла в стандартный выходной поток</font></a></li>\n";
echo "    <li><a href=\"#h\"><font face=\"Times New Roman\" size=\"3\">Открытие\n";
echo "      файлового манипулятора процесса</font></a></li>\n";
echo "    <li><a href=\"#i\"><font face=\"Times New Roman\" size=\"3\">Открытие\n";
echo "      соединения через сокет</font></a></li>\n";
echo "    <li><a href=\"#j\"><font face=\"Times New Roman\" size=\"3\">Запуск\n";
echo "      внешних программ</font></a>\n";
echo "      <ul>\n";
echo "        <li><a href=\"#k\"><font face=\"Times New Roman\" size=\"3\">Обратные\n";
echo "          апострофы</font></a></li>\n";
echo "      </ul>\n";
echo "    </li>\n";
echo "    <li><a href=\"#l\"><font face=\"Times New Roman\" size=\"3\">Работа с\n";
echo "      файловой системой</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#m\"><font face=\"Times New Roman\" size=\"3\">Отображение\n";
echo "      и изменение характеристик файлов</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#n\"><font face=\"Times New Roman\" size=\"3\">Копирование\n";
echo "      и переименование файлов</font></a></li>\n";
echo "    <li><a href=\"#o\"><font face=\"Times New Roman\" size=\"3\">Удаление\n";
echo "      файлов</font></a></li>\n";
echo "    <li><a href=\"#p\"><font face=\"Times New Roman\" size=\"3\">Работа с\n";
echo "      каталогами</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#q\"><font face=\"Times New Roman\" size=\"3\">Проект 1:\n";
echo "      простой счетчик обращений</font></a></li>\n";
echo "    <li><a href=\"#r\"><font face=\"Times New Roman\" size=\"3\">Проект 2:\n";
echo "      построение карты сайта</font></a>\n";
echo "    </li>\n";
echo "    <li><a href=\"#s\"><font face=\"Times New Roman\" size=\"3\">Итоги</font></a></li>\n";
echo "  </ul>\n";
echo "</ul>\n";
echo "<A NAME=\"a\"></A>\n";
echo "<p>&nbsp;</p>\n";
echo "<p><font color=\"#000000\" face=\"Times New Roman\" size=\"5\">ГЛАВА 7</font></p>\n";
echo "<p><font color=\"#000000\" face=\"Times New Roman\" size=\"5\">Файловый ввод/вывод и файловая система</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Данная глава\n";
echo "посвящена одному из важнейших аспектов РНР\n";
echo "— средствам файлового ввода/вывода. Как\n";
echo "нетрудно предположить, входные и выходные\n";
echo "потоки данных интенсивно используются при\n";
echo "разработке web-приложений. Не ограничиваясь\n";
echo "простым чтением/записью файлов, РНР\n";
echo "предоставляет в распоряжение программиста\n";
echo "средства просмотра и модификации серверной\n";
echo "информации, а также запуска внешних\n";
echo "программ. Этим средствам и посвящена\n";
echo "настоящая глава.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"b\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Проверка\n";
echo "существования и размера файла</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Прежде чем\n";
echo "пытаться работать с файлом, желательно\n";
echo "убедиться в том, что он существует. Для\n";
echo "решения этой задачи обычно используются\n";
echo "две функции:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">file_exists( ) и is_file( ).</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">file_exists( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция f\n";
echo "ilе_ехists ( ) проверяет, существует ли заданный\n";
echo "файл. Если файл существует, функция\n";
echo "возвращает TRUE, в противном случае\n";
echo "возвращается FALSE. Синтаксис функции file_exists(\n";
echo "):</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">bool file_exists(string файл)\n";
echo "</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Пример\n";
echo "проверки существования файла:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if (! file_exists ($filename))\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;File\n";
echo "$filename does not exist!&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif:</font></p>\n";
echo "<p><b>is_file( )</b></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция is_file(\n";
echo ")\n";
echo "проверяет существование заданного файла и\n";
echo "возможность выполнения с ним операций\n";
echo "чтения/записи. В сущности, is_file( )\n";
echo "представляет собой более надежную версию\n";
echo "file_exists( ), которая проверяет не только факт\n";
echo "существования файла, но и то, поддерживает\n";
echo "ли он чтение и запись данных:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">bool is_file(string файл) </font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Следующий\n";
echo "пример показывает, как убедиться в\n";
echo "существовании файла и возможности\n";
echo "выполнения операций с ним:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = &quot;somefile.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if (is_file($file)) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;The file\n";
echo "$file is valid and exists!&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;The file\n";
echo "$file does not exist or it is not a valid file!&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Убедившись в\n";
echo "том, что нужный файл существует и с ним\n";
echo "можно выполнять различные операции чтения/записи,\n";
echo "можно переходить к следующему шагу —\n";
echo "открытию файла.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">filesize( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция filesize(\n";
echo ")\n";
echo "возвращает размер (в байтах) файла с\n";
echo "заданным именем или FALSE в случае ошибки.\n";
echo "Синтаксис функции filesize( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">int filesize(string имя_файла)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Предположим,\n";
echo "вы хотите определить размер файла pastry.txt.\n";
echo "Для получения нужной информации можно\n";
echo "воспользоваться функцией filesize( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fs = filesize(&quot;pastry.txt&quot;);\n";
echo "print &quot;Pastry.txt is $fs bytes.&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Выводится\n";
echo "следующий результат:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Pastry.txt is 179 bytes.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Прежде чем\n";
echo "выполнять операции с файлом, необходимо\n";
echo "открыть его и связать с файловым\n";
echo "манипулятором, а после завершения работы с\n";
echo "файлом его следует закрыть. Эти темы\n";
echo "рассматриваются в следующем разделе.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"c\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Открытие и\n";
echo "закрытие файлов</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Прежде чем\n";
echo "выполнять операции ввода/вывода с файлом,\n";
echo "необходимо открыть его функцией fopen( ).</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fopen( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fopen( ) открывает файл (если он существует) и\n";
echo "возвращает целое число — так называемый </font><i><font COLOR=\"#000000\">файловый\n";
echo "манипулятор </font></i><font COLOR=\"#000000\">(file handle).\n";
echo "Синтаксис функции fopen( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int fopen (string </font> <font size=\"3\"><font COLOR=\"#000000\">файл,\n";
echo "string режим [, int </font></font></font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">включение_пути])</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Открываемый\n";
echo "файл может находиться в локальной файловой\n";
echo "системе, существовать в виде стандартного\n";
echo "потока ввода/вывода или представлять файл в\n";
echo "удаленной системе, принимаемой средствами\n";
echo "HTTP или FTP.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Параметр\n";
echo "файл может задаваться в нескольких формах,\n";
echo "перечисленных ниже:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "параметр содержит имя локального файла,\n";
echo "функция fopen( ) открывает этот файл и\n";
echo "возвращает манипулятор.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "параметр задан в виде php://stdin, php://stdout или php://stderr,\n";
echo "открывается соответствующий стандартный\n";
echo "поток ввода/вывода.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "параметр начинается с префикса http://,\n";
echo "функция открывает подключение HTTP к серверу\n";
echo "и возвращает манипулятор для указанного\n";
echo "файла.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "параметр начинается с префикса ftp://, функция\n";
echo "открывает подключение FTP к серверу и\n";
echo "возвращает манипулятор для указанного\n";
echo "файла. В этом случае следует обратить\n";
echo "особое внимание на два обстоятельства: если\n";
echo "сервер не поддерживает пассивный режим FTP,\n";
echo "вызов fopen( ) завершается неудачей. Более того,\n";
echo "FTP-файлы открываются либо для чтения, либо\n";
echo "для записи.</font></p>\n";
echo "<p><i><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\"><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">При\n";
echo "работе в пассивном режиме сервер ЯР ожидает\n";
echo "подключения со стороны клиентов. При\n";
echo "работе в активном режиме сервер сам\n";
echo "устанавливает соединение с клиентом. По\n";
echo "умолчанию обычно используется активный\n";
echo "режим.</font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Параметр\n";
echo "режим определяет возможность выполнения\n";
echo "чтения и записи в файл. В табл. 7.1\n";
echo "перечислены некоторые значения,\n";
echo "определяющие режим открытия файла.</font></p>\n";
echo "<b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Таблица\n";
echo "7.1.<i>\n";
echo " </i> </font></font></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Режимы\n";
echo "открытия файла</font></font></i>&nbsp;</p>\n";
echo "<table border=\"1\" width=\"500\" cellspacing=\"0\" cellpadding=\"0\">\n";
echo "  <tr>\n";
echo "    <td width=\"136\" align=\"center\">\n";
echo "<b>\n";
echo "<font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Режим</font>\n";
echo "</b>\n";
echo "    </td>\n";
echo "    <td width=\"358\" align=\"center\"><b><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Описание</font>\n";
echo "</b>\n";
echo "    </td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">\n";
echo "      <p align=\"center\">r</p>\n";
echo "    </td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Только\n";
echo "чтение. Указатель текущей позиции\n";
echo "устанавливается в начало файла</font>\n";
echo "    </td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">r+</td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\"> Чтение и\n";
echo "запись. Указатель текущей позиции\n";
echo "устанавливается в начало файла</font></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">w</td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Только\n";
echo "      запись. Указатель текущей позиции\n";
echo "      устанавливается в начало файла, а все\n";
echo "      содержимое файла уничтожается. Если\n";
echo "      файл не существует, функция пытается\n";
echo "      создать его</font>\n";
echo "    </td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">w+</td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Чтение и запись. Указатель текущей позиции\n";
echo "устанавливается в начало файла, а все\n";
echo "содержимое файла уничтожается. Если файл не\n";
echo "существует, функция пытается создать его&nbsp;</font>\n";
echo "    </td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">a</td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Только запись. Указатель текущей позиции\n";
echo "устанавливается в конец файла. Если файл</font>\n";
echo "<font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">не\n";
echo "существует, функция пытается создать его</font></td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" align=\"center\">a+</td>\n";
echo "    <td width=\"350\"><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Чтение и\n";
echo "запись. Указатель текущей позиции\n";
echo "устанавливается в конец файла. Если файл не\n";
echo "существует, функция пытается создать его</font></td>\n";
echo "  </tr>\n";
echo "</table>\n";
echo "<b>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "необязательный третий параметр включение_пути\n";
echo "равен 1, то путь к файлу определяется по\n";
echo "отношению к каталогу включаемых файлов,\n";
echo "указанному в файле php.ini (см. главу 1).</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Ниже\n";
echo "приведен пример открытия файла функцией fopen(\n";
echo ").\n";
echo "Вызов die( ), используемый в сочетании с fopen( ),\n";
echo "обеспечивает вывод сообщения об ошибке в\n";
echo "том случае, если открыть файл не удастся:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = &quot;userdata.txt&quot;;\n";
echo "// Некоторый файл</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen($file,\n";
echo "&quot;a+&quot;) or die(&quot;File ($file) does not exist!&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Следующий\n";
echo "фрагмент открывает подключение к сайту РНР\n";
echo "(http://www.php.net):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$site = &quot;http://www.php.net&quot;:\n";
echo "// Сервер, доступный через HTTP</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$sh = fopen($site.,\n";
echo "&quot;r&quot;);&nbsp;&nbsp;&nbsp;&nbsp; //Связать манипулятор с индексной\n";
echo "страницей Php.net</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">После\n";
echo "завершения работы файл всегда следует\n";
echo "закрывать функцией fclose( ).</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fclose ( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fclose( ) закрывает файл с заданным\n";
echo "манипулятором. При успешном закрытии\n";
echo "возвращается TRUE, при неудаче — FALSE.\n";
echo "Синтаксис функции fclose( ): </font></font></p>\n";
echo "<p><font face=\"Courier New\" size=\"3\"><font COLOR=\"#000000\">int fclose(int </font><font COLOR=\"#000000\">манипулятор)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция fclose(\n";
echo ") успешно закрывает только те файлы, которые\n";
echo "были ранее открыты функциями fopen( ) или fsockopen(\n";
echo "). Пример закрытия файла:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = &quot;userdata.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if (file_exists($file)) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen($file,\n";
echo "&quot;r&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Выполнить\n";
echo "операции с файлом</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;File Sfile\n";
echo "does not exist!&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif;</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"d\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Запись в\n";
echo "файл</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">С открытыми\n";
echo "файлами выполняются две основные операции\n";
echo "— чтение и запись.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">is_writeable( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "is_writeable( ) позволяет убедиться в том, что файл\n";
echo "существует и для него разрешена операция\n";
echo "записи. Возможность записи проверяется как\n";
echo "для файла, так и для каталога. Синтаксис\n";
echo "функции is_writeable( ):</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">bool is_writeable (string файл)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Одно важное\n";
echo "обстоятельство: скорее всего, РНР будет\n";
echo "работать под идентификатором пользователя,\n";
echo "используемым web-сервером (как правило, «nobody»).\n";
echo "Пример использования is_writeable( ) приведен в\n";
echo "описании функции fwrite( ).</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fwrite ( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fwrite( ) записывает содержимое строковой\n";
echo "переменной в файл, заданный файловым\n";
echo "манипулятором. Синтаксис функции fwrite( ):\n";
echo "</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" face=\"Courier New\" size=\"3\">int fwrite(int манипулятор, string\n";
echo "переменная [, int длина])\n";
echo "</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если при\n";
echo "вызове функции передается необязательный\n";
echo "параметр длина, запись останавливается\n";
echo "либо после записи указанного количества\n";
echo "символов, либо при достижении конца строки.\n";
echo "Проверка возможности записи в файл\n";
echo "продемонстрирована в следующем примере:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Информация\n";
echo "о трафике на пользовательском сайте</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$data =\n";
echo "&quot;08:13:00|12:37:12|208.247.106.187|Win98&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$filename = &quot;somefile.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Если файл\n";
echo "существует и в него возможна запись</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ( is_writeable($filename)\n";
echo ") :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Открыть\n";
echo "файл и установить указатель текущей\n";
echo "позиции в конец файла</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen($filename,\n";
echo "&quot;a+&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Записать\n";
echo "содержимое $data в файл</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">$</font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">success - fwrite($fh,\n";
echo "$data);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Закрыть\n";
echo "файл</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh); else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;Could not\n";
echo "open Sfilename for writing&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><i><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\"><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">Функция\n";
echo "fputs( ) является псевдонимом fwrite( ) и может\n";
echo "использоваться всюду, где используется fwrite(\n";
echo ").</font></p>\n";
echo "</i><b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fputs( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fputs( ) является псевдонимом fwrite( ) и имеет\n";
echo "точно такой же синтаксис. Синтаксис функции\n";
echo "fputs( ): </font></font></p>\n";
echo "<p><font COLOR=\"#000000\" face=\"Courier New\" size=\"3\">int fputs(int манипулятор,\n";
echo "string переменная [, int длина]) </font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Лично я\n";
echo "предпочитаю использовать fputs( ). Следует\n";
echo "помнить, что это всего лишь вопрос стиля,\n";
echo "никак не связанный с какими-либо различиями\n";
echo "между двумя функциями.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"e\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Чтение из\n";
echo "файла</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Несомненно,\n";
echo "чтение является самой главной операцией,\n";
echo "выполняемой с файлами. Ниже описаны\n";
echo "некоторые функции, повышающие\n";
echo "эффективность чтения из файла. Синтаксис\n";
echo "этих функций практически точно копирует\n";
echo "синтаксис аналогичных функций записи.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">is_readable( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция i\n";
echo "s_readable( ) позволяет убедиться в том, что файл\n";
echo "существует и для него разрешена операция\n";
echo "чтения. Возможность чтения проверяется как\n";
echo "для файла, так и для каталога. Синтаксис\n";
echo "функции is_readable( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">boo! is_readable (string\n";
echo "</font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">файл]</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Скорее всего,\n";
echo "РНР будет работать под идентификатором\n";
echo "пользователя, используемым web-сервером (как\n";
echo "правило, «nobody»), поэтому для того чтобы\n";
echo "функция is_readable( ) возвращала TRUE, чтение из\n";
echo "файла должно быть разрешено всем желающим.\n";
echo "Следующий пример показывает, как убедиться\n";
echo "в том, что файл существует и доступен для\n";
echo "чтения:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ( is_readable($filename)\n";
echo ") :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Открыть\n";
echo "файл и установить указатель текущей\n";
echo "позиции в конец файла</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen($filename,\n";
echo "&quot;r&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;$filename\n";
echo "is not readable!&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif;</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fread( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fread( ) читает из файла, заданного файловым\n";
echo "манипулятором, заданное количество байт.\n";
echo "Синтаксис функции fwrite( ): </font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">int fread(int манипулятор,\n";
echo "int длина) </font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Манипулятор\n";
echo "должен ссылаться на открытый файл,\n";
echo "доступный для чтения (см. описание функции\n";
echo "is_readable( )). Чтение прекращается после\n";
echo "прочтения заданного количества байт или\n";
echo "при достижении конца файла. Рассмотрим\n";
echo "текстовый файл pastry.txt, приведенный в\n";
echo "листинге 7.1. Чтение и вывод этого файла в\n";
echo "браузере осуществляется следующим\n";
echo "фрагментом:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen('pastry.txt',\n";
echo "&quot;r&quot;) or die(&quot;Can't open file!&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = fread($fh,\n";
echo "filesize($fh));</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print $file;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Используя\n";
echo "функцию fllesize( ) для определения размера\n";
echo "pastry.txt в байтах, вы гарантируете, что функция\n";
echo "fread( ) прочитает все содержимое файла.</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.1. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Текстовый\n";
echo "файл pastry.txt</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Recipe: Pastry Dough</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">1 1/4 cups all-purpose\n";
echo "flour</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">3/4 stick (6\n";
echo "tablespoons) unsalted butter, chopped</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">2 tablespoons vegetable\n";
echo "shortening 1/4 teaspoon salt</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">3 tablespoons water</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fgetc( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fgetc( ) возвращает строку, содержащую один\n";
echo "символ из файла в текущей позиции указателя,\n";
echo "или FALSE при достижении конца файла.\n";
echo "Синтаксис функции fgetc( ):</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">string fgetc (int манипулятор)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Манипулятор\n";
echo "должен ссылаться на открытый файл,\n";
echo "доступный для чтения (см. описание функции\n";
echo "is_readable( ) ранее в этой главе). В следующем\n";
echo "примере продемонстрированы посимвольное\n";
echo "чтение и вывод файла с использованием\n";
echo "функции fgetc( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen(&quot;pastry.txt&quot;,\n";
echo "&quot;r&quot;); while (! feof($fh)) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$char = fgetc($fh):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print $char; endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fgets( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fgets( ) возвращает строку, прочитанную от\n";
echo "текущей позиции указателя в файле,\n";
echo "определяемом файловым манипулятором.\n";
echo "Файловый указатель должен ссылаться на\n";
echo "открытый файл, доступный для чтения (см.\n";
echo "описание функции is_readable( ) ранее в этой главе).\n";
echo "Синтаксис функции fgets( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">string fgets (int </font> </font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">манипулятор,\n";
echo "int длина)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Чтение\n";
echo "прекращается при выполнении одного из\n";
echo "следующих условий:</font></p>\n";
echo "<ul>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">из файла\n";
echo "прочитано длина — 1 байт;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">из файла\n";
echo "прочитан символ новой строки (включается в\n";
echo "возвращаемую строку);</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">из файла\n";
echo "прочитан признак конца файла (EOF).</font></li>\n";
echo "</ul>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если вы\n";
echo "хотите организовать построчное чтение\n";
echo "файла, передайте во втором параметре\n";
echo "значение, заведомо превышающее количество\n";
echo "байт в строке. Пример построчного чтения и\n";
echo "вывода файла:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen(&quot;pastry.txt&quot;,\n";
echo "&quot;r&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while (! feof($fh));</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$line = fgets($fh,\n";
echo "4096);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print $line. &quot;&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh):</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fgetss( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция fgetss(\n";
echo ") полностью аналогична fgets( ) за одним\n";
echo "исключением — она пытается удалять из\n";
echo "прочитанного текста все теги HTML и РНР:</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">fgetss\n";
echo "(Int манипулятор, int\n";
echo "длина [, string разрешенные_теги])</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Прежде чем\n";
echo "переходить к примерам, ознакомьтесь с\n";
echo "содержимым листинга 7.2 — этот файл\n";
echo "используется в листингах 7.3 и 7.4.</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.2. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Файл\n";
echo "science.html</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;html&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;head&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;title&gt;Breaking\n";
echo "News - Science&lt;/title&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;body&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;h1&gt;Alien\n";
echo "lifeform discovered&lt;/h1&gt;&lt;br&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;b&gt;August 20.\n";
echo "2000&lt;/b&gt;&lt;br&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Early this morning, a\n";
echo "strange new form of fungus was found growing in the closet of W. J.</font> <font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Gilmore's old apartment\n";
echo "refrigerator. It is not known if powerful radiation emanating from</font> <font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">the tenant's computer\n";
echo "monitor aided in this evolution.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;/body&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;/html&gt;</font></p>\n";
echo "<b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\"><i>Листинг 7.З.\n";
echo "</i>\n";
echo "</font></font></b><i><font COLOR=\"#000000\">Удаление\n";
echo "тегов из файла HTML перед отображением в\n";
echo "браузере</font></i></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen(&quot;science.html&quot;,\n";
echo "&quot;r&quot;);</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">while (! feof($fh)) :</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">print fgetss($fh,\n";
echo "2048);</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Результат\n";
echo "приведен ниже. Как видите, из файла science.html\n";
echo "были удалены все теги HTML, что привело к\n";
echo "потере форматирования:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Breaking News - Science\n";
echo "Alien lifeform discovered August 20. 2000 Early this morning, a strange new form\n";
echo "of fungus was found growing in the closet of W. J. Gilmore's old apartment\n";
echo "refrigerator. It is not known if powerful radiation emanating from the tenant's\n";
echo "computer monitor aided in this evolution.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В некоторых\n";
echo "ситуациях из файла удаляются все теги,\n";
echo "кроме некоторых — например, тегов разрыва\n";
echo "строк &lt;br&gt;. Листинг 7.4 показывает, как это\n";
echo "делается.</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.4. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Выборочное\n";
echo "удаление тегов из файла HTML</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh =\n";
echo "fopenC'science.html&quot;, &quot;r&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$allowable = &quot;&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while (! feof($fh)) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print fgetss($fh. 2048,\n";
echo "$allowable);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Результат:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Breaking News - Science\n";
echo "Alien lifeform discovered August 20. 2000 Early this morning, a strange new form\n";
echo "of fungus was found growing in the closet of W. J. Gilmore's old apartment\n";
echo "refrigerator. It is not known if powerful radiation emanating from the tenant's\n";
echo "computer monitor aided in this evolution.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Как видите,\n";
echo "функция fgetss( ) упрощает преобразование\n";
echo "файлов, особенно при наличии большого\n";
echo "количества файлов HTML, отформатированных\n";
echo "сходным образом.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"f\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Чтение файла\n";
echo "в массив</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция file( )\n";
echo "загружает все содержимое файла в\n";
echo "индексируемый массив. Каждый элемент\n";
echo "массива соответствует одной строке файла.\n";
echo "Синтаксис функции filе ( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">array </font></font><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">file\n";
echo "(string файл [, int включение_пути])</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "необязательный третий параметр включение_пути\n";
echo "равен 1, то путь к файлу определяется по\n";
echo "отношению к каталогу включаемых файлов,\n";
echo "указанному в файле php.ini (см. главу 1). В\n";
echo "листинге 7.5 функция file( ) используется для\n";
echo "загрузки файла pastry.txt (см. листинг 7.1).</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.5. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Загрузка\n";
echo "файла pastry.txt функцией file( )</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file_array = file(\n";
echo "&quot;pastry.txt&quot; );</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while ( list( $line_num.\n";
echo "$line ) = eacht($file_array ) ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;b&gt;Line\n";
echo "$line_num:&lt;/b&gt; &quot;, htmlspecialchars($line ), &quot;&lt;br&gt;\n&quot;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Каждая\n";
echo "строка массива выводится вместе с номером:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 0: Recipe: Pastry\n";
echo "Dough</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 1: 1 1/4 cups\n";
echo "all-purpose flour</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 2: 3/4 stick (6\n";
echo "tablespoons) unsalted butter, chopped</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 3: 2 tablespoons\n";
echo "vegetable shortening</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 4: 1/4 teaspoon\n";
echo "salt</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Line 5: 3 tablespoons\n";
echo "water</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"g\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Перенаправление\n";
echo "файла в стандартный выходной поток</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция readfile(\n";
echo ") читает содержимое файла и направляет его в\n";
echo "стандартный вывод (в большинстве случаев —\n";
echo "в браузер). Синтаксис функции readfile( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int </font></font><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">readfile\n";
echo "(string файл [, int включение_пути])</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "возвращает количество прочитанных байтов.\n";
echo "Файл может находиться в локальной файловой\n";
echo "системе, существовать в виде стандартного\n";
echo "потока ввода/вывода или представлять файл в\n";
echo "удаленной системе, принимаемой средствами\n";
echo "HTTP или FTP. Параметр файл задается по тем же\n";
echo "правилам, что и в функции fopen( ).</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Предположим,\n";
echo "у вас имеется файл latorre.txt, содержимое\n";
echo "которого вы хотите вывести в браузере:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Restaurant &quot;La Тоrrе.&quot; located in Nettuno, Italy, offers an eclectic blend of\n";
echo "style. history, and fine seafood cuisine. Within the walls of the medieval borgo\n";
echo "surrounding the city, one can dine while watching the passersby shop in the\n";
echo "village boutiques. Comfort coupled with only the freshest seafare make La Torre\n";
echo "one of Italy's finest restaurants.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">При\n";
echo "выполнении следующего фрагмента все\n";
echo "содержимое latorre.txt направляется в\n";
echo "стандартный выходной поток:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$restaurant_file =\n";
echo "&quot;latorre.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Направить\n";
echo "весь файл в стандартный выходной поток</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">readfile($restaurant_filе);</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"h\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Открытие\n";
echo "файлового манипулятора процесса</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">popen( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Наряду с\n";
echo "обычными файлами можно открывать файловые\n";
echo "манипуляторы для взаимодействия с\n";
echo "процессами на сервере. Задача решается\n";
echo "функцией рореn( ), которая имеет следующий\n";
echo "синтаксис:</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int popen (string команда,\n";
echo "string режим) </font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Параметр\n";
echo "команда определяет выполняемую системную\n";
echo "команду, а параметр режим описывает режим\n";
echo "доступа:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Открыть\n";
echo "файл &quot;spices.txt&quot; для записи</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen(&quot;spices.txt&quot;,&quot;w&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Добавить\n";
echo "несколько строк текста</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fputs($fh, &quot;Parsley,\n";
echo "sage, rosemary\n&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fputs($fh, &quot;Paprika,\n";
echo "salt, pepper\n&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fputs($fh, &quot;Basil,\n";
echo "sage, ginger\n&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Закрыть\n";
echo "манипулятор</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Открыть\n";
echo "процесс UNIX grep для поиска слова Basil в файле\n";
echo "spices.txt</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh - popen(&quot;grep\n";
echo "Basil &lt; spices.txt&quot;, &quot;r&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Вывести\n";
echo "результат работы grep</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fpassthru($fh);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Результат\n";
echo "выглядит так:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Basil, sage, ginger</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "fpassthru( ) является аналогом функции passthru( ),\n";
echo "рассматриваемой в разделе «Запуск внешних\n";
echo "программ» этой главы.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">pclose( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">После\n";
echo "выполнения всех операций файл или процесс\n";
echo "необходимо закрыть. Функция pclose( ) закрывает\n";
echo "соединение с процессом, заданным\n";
echo "манипулятором, по аналогии с тем, как\n";
echo "функция fclose( ) закрывает файл, открытый\n";
echo "функцией fopen( ). Синтаксис функции pclose( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int pclose (int </font> </font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">манипулятор}</font></p>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">В\n";
echo "параметре </font><i><font COLOR=\"#000000\">манипулятор </font></i><font COLOR=\"#000000\">передается\n";
echo "манипулятор, полученный ранее при успешном\n";
echo "вызове рореn( ).</font></font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"i\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Открытие\n";
echo "соединения через сокет</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">РНР не\n";
echo "ограничивается взаимодействием с файлами и\n";
echo "процессами — вы также можете устанавливать\n";
echo "соединения через сокеты. </font><i><font COLOR=\"#000000\">Сокет\n";
echo "</font></i><font COLOR=\"#000000\">(socket) представляет собой\n";
echo "программную абстракцию, позволяющую\n";
echo "устанавливать связь с различными службами\n";
echo "другого компьютера.</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fsockopen( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "fsockopen( ) устанавливает сокетное соединение с\n";
echo "сервером в Интернете</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">через\n";
echo "протокол TCP или UDP. Синтаксис функции fsockopen( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int fsockopen (string\n";
echo "узел, int порт [, int код_ошибки [, string текст_ошибки\n";
echo "[, int тайм-аут]]]) </font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Необязательные\n";
echo "параметры код_ошибки и текст_ошибки\n";
echo "содержат информацию, которая будет\n";
echo "выводиться в случае неудачи при\n";
echo "подключении к серверу. Оба параметра должны\n";
echo "передаваться по ссылке. Третий\n";
echo "необязательный параметр, тайм-аут, задает\n";
echo "продолжительность ожидания ответа от\n";
echo "сервера (в секундах). В листинге 7.6\n";
echo "продемонстрировано применение функции\n";
echo "fsockopen( ) для получения информации о сервере.\n";
echo "Однако перед рассмотрением листинга 7.6\n";
echo "необходимо познакомиться еще с одной\n";
echo "функцией — socket_set_blocking( ).</font></p>\n";
echo "<p><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\"><i><font COLOR=\"#000000\">UDP\n";
echo "(User Datagram Protocol) — коммуникационный протокол,\n";
echo "не ориентированный на соединение.</font></p>\n";
echo "</i><b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">socket_set_blocking( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "socket_set_b1ocki ng( ) позволяет установить контроль\n";
echo "над тайм-аутом для операций с сервером:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\">socket_set_blocking(int манипулятор,\n";
echo "boolean режим)\n";
echo "</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Параметр\n";
echo "манипулятор задает открытый ранее сокет, а\n";
echo "параметр режим выбирает режим, в который\n";
echo "переключается сокет (TRUE для блокирующего\n";
echo "режима, FALSE для неблокирующего режима).\n";
echo "Пример использования функций fsockopen( ) и\n";
echo "socket_set_blocking( ) приведен в листинге 7.6.</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.6. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Использование\n";
echo "функции fsockopen() для получения информации о\n";
echo "сервере</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">function getthehost($host.$path)\n";
echo "{</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Открыть подключение к узлу</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fp - fsockopen($host,\n";
echo "80, &amp;$errno, &amp;$errstr, 30);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Перейти в блокирующий\n";
echo "режим</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">socket_set_blocking($fp, 1),</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Отправить заголовки</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fputs($fp,&quot;GET $path HTTP/1.1\r\n&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fputs ($fp, &quot;Host:\n";
echo "$host\r\n\r\n&quot;); $x = 1;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Получить\n";
echo "заголовки</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while($x &lt; 10) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$headers = fgets ($fp,\n";
echo "4096);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print $headers;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$x++;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Закрыть\n";
echo "манипулятор</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fp);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">}</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">getthehost(&quot;www.\n";
echo "apress.com&quot;, &quot;/&quot;);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В результате\n";
echo "выполнения листинга 7.6 выводится следующий\n";
echo "результат:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">НТТР/1.1 200 OK Server:\n";
echo "Microsoft-IIS/4.0 Content-location:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">http://www.apress.com/0efault.htm\n";
echo "Date: Sat. 19 Aug 2000 23:03:25 GMT</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Content-Type: text/html\n";
echo "Accept-Ranges: bytes\n";
echo "Last-Modified: Wed. 19 Jul</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">2000 20:25:06 GMT ETag:\n";
echo "&quot;f0a61666dbff1bf1:34a5&quot; Content-Length: 1311</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">pfsockopen( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "pfsockopen( ) представляет собой устойчивую (persistent)\n";
echo "версию fsockopen( ). Это означает, что соединение\n";
echo "не будет автоматически разорвано по\n";
echo "завершении сценария, в котором была вызвана\n";
echo "функция. Синтаксис функции pfsockopen( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\">int </font><font size=\"3\"><font COLOR=\"#000000\">pfsockopen\n";
echo "(string узел, int порт [, int код_ошибки [, string текст _ошибки\n";
echo "[, int </font></font></font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">тайм-аут]]])</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В\n";
echo "зависимости от конкретных целей вашего\n";
echo "приложения может оказаться удобнее\n";
echo "использовать pfsockopen( ) вместо fsockopen( ).</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"j\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Запуск\n";
echo "внешних программ</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Сценарии РНР\n";
echo "также могут выполнять программы,\n";
echo "находящиеся на сервере. Такая возможность\n";
echo "особенно часто используется при\n";
echo "администрировании системы через web-браузер,\n";
echo "а также для более удобного получения\n";
echo "сводной информации о системе.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">ехес( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "ехес( ) запускает заданную программу и\n";
echo "возвращает последнюю строку ее выходных\n";
echo "данных. Синтаксис функции ехес( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\">string </font><font size=\"3\"><font COLOR=\"#000000\">exec\n";
echo "(string команда [, string массив [, int </font></font></font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">возврат]])</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Обратите\n";
echo "внимание: функция ехес( ) только выполняет\n";
echo "команду, не выводя результатов ее работы.\n";
echo "Все выходные данные команды можно\n";
echo "сохранить в необязательном параметре\n";
echo "массив. Кроме того, если при заданном\n";
echo "параметре массив также задается переменная\n";
echo "возврат, последней присваивается код\n";
echo "возврата выполненной команды.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Листинг 7.7\n";
echo "показывает, как использовать функцию ехес( )\n";
echo "для выполнения системной функции UNIX ping.</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.7. </font></font></i></b><font size=\"3\" face=\"Times New Roman\"><i><font COLOR=\"#000000\">Проверка\n";
echo "связи с сервером с применением функции ехес(\n";
echo ")</font></i></font></p>\n";
echo "<p><font COLOR=\"#000000\" face=\"Courier New\" size=\"3\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">exec(&quot;ping -с 5\n";
echo "www.php.net&quot;, $ping);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// В Windows - exec(&quot;ping\n";
echo "-n 5 www.php.net. $ping);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">for ($i=0; $i&lt; count($ping);$i++)\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;br&gt;$ping[$i]&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endfor;</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Результат:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">PING www.php.net\n";
echo "(208.247.106.187): 56 data bytes</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">64 bytes from 208.247.106.187: icmp_seq=0 ttl=243\n";
echo "time=66.602 ms</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">64 bytes from 208.247.106.187: icmp_seq=1 ttl=243 time=55.723 ms</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">64 bytes from 208.247.106.187: icmp_seq=2 ttl=243 time=70.779 ms</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">64 bytes from\n";
echo "208.247.106.187: icmp_seq=3 ttl=243 time=55.339 ms</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">64 bytes from\n";
echo "208.247.106.187: icmp_seq=4 ttl=243 time=69.865 ms</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">-- www.php.net ping\n";
echo "statistics --</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">5 packets transmitted.\n";
echo "5 packets received. 0% packet loss</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">round-trip min/avg/max/stddev\n";
echo "- 55.339/63.662/70.779/6.783 ms</font></p>\n";
echo "<p><A NAME=\"k\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Обратные\n";
echo "апострофы</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Существует и\n";
echo "другой способ выполнения системных команд,\n";
echo "не требующий вызова функций, — выполняемая\n";
echo "команда заключается в обратные апострофы (`\n";
echo "`), а результаты ее работы отображаются в\n";
echo "браузере. Пример:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$output = `ls`;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;pre&gt;$output&lt;/pre&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Этот\n";
echo "фрагмент выводит в браузер содержимое\n";
echo "каталога, в котором находится сценарий.</font></p>\n";
echo "<p><i><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\"><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">Внутренний\n";
echo "параметр ping -с 5 (-п 5 в системе Windows) задает\n";
echo "количество опросов сервера.</font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если вы\n";
echo "хотите просто вернуть неформатированные\n";
echo "результаты выполнения команды,\n";
echo "воспользуйтесь функцией passthru( ), описанной\n";
echo "ниже.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">passthru( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "passthru( ) работает почти так же, как ехес( ), за\n";
echo "одним исключением — она автоматически\n";
echo "выводит результаты выполнения команды.\n";
echo "Синтаксис функции passthru( ): </font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\">void </font><font size=\"3\"><font COLOR=\"#000000\">passthru(string\n";
echo "команда [, int </font></font></font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">возврат])</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если при\n";
echo "вызове passthru( ) передается необязательный\n";
echo "параметр возврат, этой переменной\n";
echo "присваивается код возврата выполненной\n";
echo "команды.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">escapeshellcmd( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "escapeshellcmd( ) экранирует все потенциально\n";
echo "опасные символы, которые могут быть введены\n";
echo "пользователем (например, на форме HTML), для\n";
echo "выполнения команд exec( ), passthru( ), system( ) или\n";
echo "рореn( ). Синтаксис:</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">string escapeshellcmd\n";
echo "(string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">команда)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">К\n";
echo "пользовательскому вводу всегда следует\n";
echo "относиться с определенной долей\n";
echo "осторожности, но даже в этом случае\n";
echo "пользователи могут вводить команды,\n";
echo "которые будут исполняться функциями\n";
echo "запуска системных команд. Рассмотрим\n";
echo "следующий фрагмент:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$user_input = `rm -rf\n";
echo "*`; // Удалить родительский каталог и все его\n";
echo "подкаталоги</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">ехес($user_input); // Выполнить $user_input\n";
echo "!!!</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если не\n";
echo "предпринять никаких мер предосторожности,\n";
echo "такая команда приведет к катастрофе.\n";
echo "Впрочем, можно воспользоваться функций\n";
echo "escapeshellcmd( ) для экранирования\n";
echo "пользовательского ввода:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$user_input = `rm - rf\n";
echo "*`; // Удалить родительский каталог и все его\n";
echo "подкаталоги</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">ехес( escapeshellcmd($user_input)); //\n";
echo "Экранировать опасные символы</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "escapeshellcmd( ) экранирует символ *, предотвращая\n";
echo "катастрофические последствия выполнения\n";
echo "команды.</font></p>\n";
echo "<p><i><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\"><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\">Безопасность\n";
echo "является одним из важнейших аспектов\n";
echo "программирования в среде Web, поэтому я\n";
echo "посвятил целую главу этой теме и ее\n";
echo "отношению к программированию РНР. За\n";
echo "дополнительной информацией обращайтесь к\n";
echo "главе 16.</font></p>\n";
echo "</i><b>\n";
echo "<p><A NAME=\"l\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Работа с\n";
echo "файловой системой</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В РНР\n";
echo "существуют функции для просмотра и\n";
echo "выполнения различных операций с файлами на\n";
echo "сервере. Информация об атрибутах серверных\n";
echo "файлов (местонахождение, владелец и\n";
echo "привилегии) часто бывает полезной.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">basename( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "basename( ) выделяет имя файла из переданного\n";
echo "полного имени. Синтаксис функции basename( ):</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">string basename(string полное_имя)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Выделение\n";
echo "базового имени файла из полного имени\n";
echo "происходит следующим образом:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$path = &quot;/usr/local/phppower/htdocs/index.php&quot;;\n";
echo "$file = basename($path); // $file = &quot;index.php&quot;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Фактически\n";
echo "эта функция удаляет из полного имени путь и\n";
echo "оставляет только имя файла.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">getlastmod( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция\n";
echo "getlastmod( ) возвращает дату и время последней\n";
echo "модификации страницы, из которой\n";
echo "вызывается функция. Синтаксис функции\n";
echo "getlastmod( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">int getlastmod(void)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Возвращаемое\n";
echo "значение соответствует формату даты/времени\n";
echo "UNIX, и для его форматирования можно\n";
echo "воспользоваться функцией date( ). Следующий\n";
echo "фрагмент выводит дату последней\n";
echo "модификации страницы:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">echo &quot;Last\n";
echo "modified: &quot;.date( &quot;H:i:s a&quot;. getlastmod( ) );</font></p>\n";
echo "<b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\" COLOR=\"#000000\">stat( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция stat( )\n";
echo "возвращает индексируемый массив с\n";
echo "подробной информацией о файле с заданным\n";
echo "именем:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">array stat(string\n";
echo "имя_файла)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В элементах\n";
echo "массива возвращается следующая информация:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">0 У</font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">стройство</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">1 Индексный\n";
echo "узел (inode)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">2 Режим\n";
echo "защиты индексного узла</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">3 Количество\n";
echo "ссылок</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">4\n";
echo "Идентификатор пользователя владельца</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">5\n";
echo "Идентификатор группы владельца</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">6 Тип\n";
echo "устройства индексного узла</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">7 Размер в\n";
echo "байтах</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">8 Время\n";
echo "последнего обращения</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">9 Время\n";
echo "последней модификации</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">10 Время\n";
echo "последнего изменения</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">11 Размер\n";
echo "блока при вводе/выводе в файловой системе</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">12 Количество</font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">\n";
echo "выделенных блоков</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Таким\n";
echo "образом, если вы хотите узнать время\n";
echo "последнего обращения к файлу, обратитесь к\n";
echo "элементу 8 возвращаемого массива.\n";
echo "Рассмотрим пример:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file - &quot;datafile.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">list($dev, $inode, $inodep,\n";
echo "$nlink, $uid, $gid, $inodev, $size, $atime, $mtime, $ctime,</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$bsize) = stat($file);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;$file is\n";
echo "$size bytes. &lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;Last access\n";
echo "time: $atime &lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;Last\n";
echo "modification time: $mtime &lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Результат:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">popen.php is 289 bytes.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Last access time:\n";
echo "August 15 2000 12:00:00</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Last modification time:\n";
echo "August 15 2000 10:07:18</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В этом\n";
echo "примере я воспользовался конструкцией list ()\n";
echo "для присваивания имен каждому\n";
echo "возвращаемому значению. Конечно, с таким же\n";
echo "успехом можно вернуть массив, в цикле\n";
echo "перебрать элементы и вывести всю\n";
echo "необходимую информацию. Как видите, функция\n";
echo "stat ( ) позволяет получить различные полезные\n";
echo "сведения о файле.</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"m\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Отображение\n";
echo "и изменение характеристик файлов</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">У каждого\n";
echo "файла в системах семейства UNIX есть три\n";
echo "важные характеристики:</font></p>\n";
echo "<ul>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">принадлежность\n";
echo "группе;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">владелец;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">разрешения (permissions).</font></li>\n";
echo "</ul>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Все эти\n";
echo "характеристики можно изменить при помощи\n";
echo "соответствующих функций РНР. Функции,\n";
echo "описанные в этом разделе, не работают в\n";
echo "системах семейства Windows.</font></p>\n";
echo "<p><img border=\"0\" src=\"Prim.gif\" align=left width=\"36\" height=\"35\"><i><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "у вас нет опыта работы в операционных\n";
echo "системах UNIX, информацию о характеристиках\n";
echo "файловой системы UNIX можно получить по\n";
echo "адресу <a href=\"http://sunsite.auc.dk/linux-newbie/FAQ2.htm\"> http://sunsite.auc.dk/linux-newbie/FAQ2.htm</a>. Темы\n";
echo "принадлежности группе, владения и\n";
echo "разрешений рассматриваются в разделе 3.2.6.</font></p>\n";
echo "</i><b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chgrp( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция chgrp( )\n";
echo "пытается сменить группу, которой\n";
echo "принадлежит заданный файл.</font> <font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Синтаксис\n";
echo "функции chgrp( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chgrp\n";
echo "(string </font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла,\n";
echo "mixed группа)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">filegroup( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "filegroup( ) возвращает идентификатор группы\n";
echo "владельца файла с заданным именем или FALSE в\n";
echo "случае ошибки. Синтаксис функции filegroup( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int filegroup (string\n";
echo "</font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chmod( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция chmod( )\n";
echo "изменяет разрешения файла с заданным\n";
echo "именем. Синтаксис</font> <font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">функции chmod(\n";
echo "):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chmod\n";
echo "(string </font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла,\n";
echo "int разрешения)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Разрешения\n";
echo "задаются в восьмеричной системе. Специфика\n";
echo "задания параметра функции chmod ( )\n";
echo "продемонстрирована в следующем примере:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">chmod(&quot;data_file.txt&quot;,\n";
echo "g+r); // He работает</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">chmod(&quot;data_file.txt&quot;,\n";
echo "766); // Не работает</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">chmod(&quot;data_file.txt&quot;,\n";
echo "0766); // Работает</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fileperms( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fileperms( ) возвращает разрешения файла с\n";
echo "заданным именем или FALSE в случае ошибки.\n";
echo "Синтаксис функции fileperms( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int fileperms (string\n";
echo "</font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chown( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "chown( ) пытается сменить владельца файла.\n";
echo "Право изменения владельца файла\n";
echo "предоставляется только привилегированному\n";
echo "пользователю. Синтаксис функции chown( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int chown (string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла,\n";
echo "mixed пользователь)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">fileowner( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "fileowner( ) возвращает идентификатор\n";
echo "пользователя для владельца файла с\n";
echo "заданным именем. Синтаксис функции fileowner( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int fileowner (string\n";
echo "</font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла)</font></font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"n\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Копирование\n";
echo "и переименование файлов</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">К числу\n";
echo "других полезных системных функций, которые\n";
echo "могут выполняться в сценариях РНР,\n";
echo "относятся копирование и переименование\n";
echo "файлов на сервере. Эти операции выполняются\n";
echo "двумя функциями: сору( ) и rename( ).</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">сору( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Скопировать\n";
echo "файл в сценарии РНР ничуть не сложнее, чем\n";
echo "при помощи команды UNIX ср. Задача решается\n";
echo "функцией РНР сору( ). Синтаксис функции</font> <font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">сору( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">copy\n";
echo "(string </font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">источник,\n";
echo "string приемник)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция сору(\n";
echo ") пытается скопировать файл источник в файл\n";
echo "приемник; в случае успеха возвращается TRUE, а\n";
echo "при неудаче — FALSE. Если файл приемник не\n";
echo "существует, функция сору( ) создает его.\n";
echo "Следующий пример показывает, как создать\n";
echo "резервную копию файла при помощи функции\n";
echo "сору( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$data_file = &quot;datal.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">copy($data_file.\n";
echo "$data_file'.bak') or die(&quot;Could not copy $data_file&quot;);</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">rename ( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "rename( ) переименовывает файл. В случае успеха\n";
echo "возвращается TRUE, a при неудаче — FALSE.\n";
echo "Синтаксис функции rename( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">bool rename (string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">старое_имя,\n";
echo "string новое_имя)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Пример\n";
echo "переименования файла функцией rename( ):</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$data_file = &quot;datal.txt&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">rename($data file,\n";
echo "$datafile'.old') or die (&quot;Could not rename $data file&quot;);</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"o\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Удаление\n";
echo "файлов</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">unlink( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция unlink(\n";
echo ") удаляет файл с заданным именем. Синтаксис:</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">unlink\n";
echo "(string </font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">файл)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если вы\n";
echo "работаете с РНР в системе Windows, при\n";
echo "использовании этой функции иногда\n";
echo "возникают проблемы. В этом случае можно\n";
echo "воспользоваться описанной выше функцией\n";
echo "system( ) и удалить файл командой DOS del:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">system (&quot;del\n";
echo "filename.txt&quot;);</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"p\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Работа с\n";
echo "каталогами</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функции РНР\n";
echo "позволяют просматривать содержимое\n";
echo "каталогов и перемещаться по ним. В листинге\n";
echo "7.8 изображена типичная структура каталогов\n";
echo "в системе UNIX.</font></p>\n";
echo "<b>\n";
echo "<p><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.8. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Типичная\n";
echo "структура каталогов</font></font></i></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">drwxr-xr-x 4 root wheel\n";
echo "512 Aug 13 13:51 book/</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">drwxr-xr-x 4 root wheel\n";
echo "512 Aug 13 13:51 code/</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">-rw-r--r-- 1 root wheel\n";
echo "115 Aug 4 09:53 index.html</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">drwxr-xr-x 7 root wheel\n";
echo "1024 Jun 29 13:03 manual/</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">-rw-r--r-- 1 root wheel\n";
echo "19 Aug 12 12:15 test.php</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">dirname( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "dirname( ) дополняет basename( ) — она извлекает путь\n";
echo "из полного имени файла. Синтаксис функции\n";
echo "dirname( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">string dirname (string\n";
echo "</font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">путь)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Пример\n";
echo "использования dirname( ) для извлечения пути из\n";
echo "полного имени:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$path = &quot;/usr/locla/phppower/htdocs/index.php&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = dirname($path);\n";
echo "// $file = &quot;usr/local/phppower/htdocs&quot;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция dirname(\n";
echo ") иногда используется в сочетании с\n";
echo "переменной $SCRIPT_FILENAME для получения полного\n";
echo "пути к сценарию, из которого выполняется\n";
echo "команда:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$dir - dirname($SCRIPT_FILENAME);</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">is_dir( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция is_dir(\n";
echo ") проверяет, является ли файл с заданным\n";
echo "именем каталогом:</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">bool </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">is_dir\n";
echo "(string </font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">имя_файла)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В следующем\n";
echo "примере используется структура каталогов\n";
echo "из листинга 7.8:</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">$</font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">isdir = is_dir(&quot;index.html&quot;);\n";
echo "// Возвращает FALSE</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$isdir = is_dir(&quot;book&quot;);&nbsp;\n";
echo "//\n";
echo "Возвращает TRUE</font></p>\n";
echo "<b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\" COLOR=\"#000000\">mkdir()</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "mkdir( ) делает то же, что и одноименная команда\n";
echo "UNIX, — она создает новый каталог. Синтаксис\n";
echo "функции mkdir( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int mkdir (string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">путь,\n";
echo "int режим)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Параметр\n";
echo "путь определяет путь для создания нового\n";
echo "каталога. Не забудьте завершить параметр\n";
echo "именем нового каталога! Параметр режим\n";
echo "определяет разрешения, назначаемые\n";
echo "созданному каталогу.</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">opendir( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Подобно тому\n";
echo "как функция fopen( ) открывает манипулятор для\n";
echo "работы с заданным файлом, функция opendir( )\n";
echo "открывает манипулятор для работы с\n";
echo "каталогом.</font> <font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Синтаксис\n";
echo "функции opendir( ):</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int opendir (string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">путь)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">closedir( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "closedir( ) закрывает манипулятор каталога,\n";
echo "переданный в качестве параметра. Синтаксис\n";
echo "функции closedir( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">void closedir(int </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">манипулятор_каталога)</font></font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">readdir( )</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Функция readdir(\n";
echo ") возвращает очередной элемент заданного\n";
echo "каталога. Синтаксис:</font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">string </font></font><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">readdir(int\n";
echo "</font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">манипулятор_каталога)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">С помощью\n";
echo "этой функции можно легко вывести список\n";
echo "всех файлов и подкаталогов, находящихся в\n";
echo "текущем каталоге:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$dh = opendir(' . );</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while ($file = readdir($dh))\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;$file &lt;br&gt;&quot;;\n";
echo "endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">closedir($dh);</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">chdir( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "chdir( ) работает так же, как команда UNIX cd, — она\n";
echo "осуществляет переход в каталог, заданный\n";
echo "параметром. Синтаксис функции chdir( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">int chdir (string </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">каталог)</font></font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В следующем\n";
echo "примере мы переходим в подкаталог book/ и\n";
echo "выводим его содержимое:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$newdir = &quot;book&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">chdir($newdir) or die(&quot;Could\n";
echo "not change to directory ($newdir)&quot;); $dh = opendir(' . ');</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;Files:&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while ($file = readdir($dh))\n";
echo ";</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;$file &lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">closedir($dh);</font></p>\n";
echo "<b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">rewinddir( )</font></p>\n";
echo "</b>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Функция\n";
echo "rewlnddir( ) переводит указатель текущей позиции\n";
echo "в начало каталога, открытого функцией opendir(\n";
echo "). Синтаксис функции rewinddir( ):</font></font></p>\n";
echo "<p><font face=\"Courier New\"><font COLOR=\"#000000\" size=\"3\">void rewinddir (int </font></font><font size=\"3\" face=\"Courier New\"><font COLOR=\"#000000\">нанипулятор_каталога)</font></font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"q\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Проект 1:\n";
echo "простой счетчик обращений</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Сценарий,\n";
echo "представленный в этом разделе,\n";
echo "подсчитывает количество обращений к\n";
echo "странице, в которой он находится. Прежде чем\n";
echo "переходить к программному коду в листинге\n";
echo "7.9, просмотрите алгоритм, написанный на\n";
echo "псевдокоде:</font></p>\n";
echo "<ol>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Присвоить\n";
echo "переменной $access имя файла, в котором будет\n";
echo "храниться значение счетчика.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Использовать функцию filе( ) для чтения\n";
echo "содержимого $access в массив $visits. Префикс @\n";
echo "перед именем функции подавляет возможные\n";
echo "ошибки (например, отсутствие файла с\n";
echo "заданным именем).</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Присвоить\n";
echo "переменной $current_visitors значение первого (и\n";
echo "единственного) элемента массива $visits.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Увеличить\n";
echo "значение $current_visitors на 1.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Открыть\n";
echo "файл $access для записи и установить указатель\n";
echo "текущей позиции в начало файла.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Записать\n";
echo "значение $current_visitors в файл $access.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Закрыть\n";
echo "манипулятор, ссылающийся на файл $access.</font></li>\n";
echo "</ol>\n";
echo "<b>\n";
echo "<p><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.9. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Простой\n";
echo "счетчик обращений</font></font></i></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Сценарий:\n";
echo "простой счетчик обращений</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Назначение:\n";
echo "сохранение количества обращений в файле</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$access = &quot;hits.txt&quot;;\n";
echo "// Имя файла выбирается произвольно</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$visits = @file($access);\n";
echo "// Прочитать содержимое файла в масссив</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$current_visitors = $visits[0]; // Извлечь первый (и\n";
echo "единственный) элемент</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">++$current_visitors; //\n";
echo "Увеличить счетчик обращений</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$fh = fopen($access. &quot;w&quot;);\n";
echo "// Открыть файл hits.txt и установить</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// указатель\n";
echo "текущей позиции в начало файла</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">@fwrite($fh,\n";
echo "$current_visitors);// Записать новое значение\n";
echo "счетчика</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// в файл &quot;hits.txt&quot;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">fclose($fh);&nbsp; // Закрыть\n";
echo "манипулятор файла &quot;hits.txt&quot;</font></p>\n";
echo "<p><font color=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<b>\n";
echo "<p><A NAME=\"r\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Проект 2:\n";
echo "построение карты сайта</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Сценарий,\n";
echo "приведенный в листинге 7.10, строит карту\n";
echo "сайта — иерархическое изображение всех\n";
echo "папок и файлов на сервере, начиная с\n";
echo "заданного каталога. При вычислении\n";
echo "отступов элементов, из которых состоит\n";
echo "карта сайта, используются функции,\n";
echo "определенные в этой и предыдущих главах.\n";
echo "Прежде чем переходить к программе,\n";
echo "просмотрите алгоритм, написанный на\n";
echo "псевдокоде:</font></p>\n";
echo "<ol>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Объявить\n";
echo "служебные переменные для хранения\n";
echo "родительского каталога, имени графического\n";
echo "файла с изображением папки, названия\n";
echo "страницы и флага серверной ОС (Windows или\n";
echo "другая система).</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Объявить\n";
echo "функцию display_directory( ), которая читает\n";
echo "содержимое каталога и форматирует его для\n";
echo "вывода в браузере.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Построить\n";
echo "путь к каталогу объединением имени,\n";
echo "передаваемого в переменной</font> <font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">$dir1, с\n";
echo "    $dir.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Открыть\n";
echo "каталог и прочитать его содержимое.\n";
echo "Отформатировать имена каталога и файлов и\n";
echo "вывести их в браузере.</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если\n";
echo "текущий файл является каталогом,\n";
echo "рекурсивно вызвать функцию display_di rectory( ) и\n";
echo "передать ей имя нового каталога для вывода.\n";
echo "Вычислить отступ, используемый при\n";
echo "форматировании вывода.</font></li>\n";
echo "</ol>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Если файл не\n";
echo "является каталогом, он форматируется для\n";
echo "отображения в виде гиперссылки (а также\n";
echo "вычисляется отступ, используемый при\n";
echo "форматировании).</font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Листинг\n";
echo "7.10. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Программа\n";
echo "sitemap.php</font></font></p>\n";
echo "</i>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Файл:\n";
echo "sitemap.php</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Назначение:\n";
echo "построение карты сайта</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Каталог, с\n";
echo "которого начинается построение карты</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$beg_path = &quot;C:\Program\n";
echo "FilesVApache Group\Apache\htdocs\phprecipes&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Файл с\n";
echo "графическим изображением папки.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Путь\n";
echo "должен задаваться Относительно* корневого\n";
echo "каталога сервера Apache</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$folder_location =\n";
echo "&quot;C:\My Documents\PHP for Programmers\FINAL CHPS\graphics\folder.gif&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Текст в\n";
echo "заголовке окна $page_name = &quot;PHPRecipes SiteMap&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// В какой\n";
echo "системе будет использоваться сценарий - Linux\n";
echo "или Windows?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// (0 - Windows; 1 - Linux)</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$usingjinux = 0;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Функция:\n";
echo "display_directory</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Назначение:\n";
echo "чтение содержимого каталога, определяемого\n";
echo "параметром</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// $dir1, с\n";
echo "последующим форматированием иерархии\n";
echo "каталогов и файлов.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Функция\n";
echo "может вызываться рекурсивно.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">function\n";
echo "display_directory ($dir1, $folder_location, $using_linux, $init_depth) {</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Обновить\n";
echo "путь</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$dir.= $dir1;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">Sdh = opendir($dir);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while($file = readdir($dh))\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Элементы\n";
echo "каталогов &quot;.&quot; и &quot;..&quot; не выводятся.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ( ($file !=\n";
echo "&quot;.&quot;) &amp;&amp; ($file != &quot;..&quot;) ) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ($using_linux == 0 )\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$depth = explode(&quot;\\&quot;,\n";
echo "$dir): else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$depth = explode(&quot;/&quot;,\n";
echo "$dir); endif ; $curtent_depth = sizeof( $depth);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Построить\n";
echo "путь по правилам используемой операционной\n";
echo "системы. if ($using_linux == 0) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$tab_depth =\n";
echo "$current_deptn - $init_depth;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = $dir. &quot;\\&quot;,\n";
echo "$file; else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$file = $dir.\n";
echo "&quot;/&quot;,$file; endif;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Переменная\n";
echo "$file содержит каталог? if ( is dir($file) ) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$х = 0;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Вычислить\n";
echo "отступ</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while ( $х &lt; ($tab_depth\n";
echo "* 2) ) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&amp;nbsp;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$х++; endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;img src=\&quot;$folder_location\&quot;\n";
echo "alt=\&quot;[dir]\&quot;&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&quot;.basename($file).&quot;&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">//\n";
echo "Увеличить счетчик &amp;nbsp;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Рекурсивный\n";
echo "вызов функции display_directory()</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">display_directory($file,\n";
echo "$folder_location, $using_linux, $init_depth);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// He каталог</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Построить\n";
echo "путь по правилам используемой</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">//\n";
echo "операционной системы.</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ($using_linux == 0) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$tab_depth = ($current_depth\n";
echo "- $init_depth) - 2; $x = 0;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Вычислить\n";
echo "отступ</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">while ( $x &lt; (($tab_depth\n";
echo "* 2) + 5) ) :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&amp;nbsp;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$x++;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;a\n";
echo "href =</font><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">\ &quot;&quot; .$dir.&quot;\\&quot;.basename($file).&quot;\&quot;&gt;&quot;.basename($file).&quot;&lt;/a&gt;\n";
echo "&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">print &quot;&lt;a href\n";
echo "= \&quot;&quot;.$dir.&quot;/&quot;.basename($file).&quot;\&quot;&gt;&quot;.basename($file).&quot;&lt;/a&gt;\n";
echo "&lt;br&gt;&quot;;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif; // Is_dir(file)\n";
echo "endif: // If ! &quot;.&quot; or &quot;..&quot;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endwhile;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Закрыть\n";
echo "каталог closedir($dh);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;html &gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;head&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;title&gt; &lt;?\n";
echo "print &quot;$page_name&quot;; ?&gt; &lt;/title&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;/head&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;body bgcolor=&quot;#ffffff&quot;\n";
echo "text=&quot;#000000&quot; link=&quot;#000000&quot; vlink=&quot;#000000&quot;\n";
echo "alink=&quot;#000000&quot;&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;?</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">// Вычислить\n";
echo "начальный отступ</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">if ($using_linux == 0)\n";
echo ":</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$depth = explode(&quot;\\&quot;,\n";
echo "$beg_path);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">else :</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$depth = explode(&quot;/&quot;,\n";
echo "$beg_path);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">endif:</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">$init_depth = sizeof($depth);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">display_directory ($beg_path,\n";
echo "$folder_location, $using_linux, $init_depth);</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">?&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;/body&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Courier New\">&lt;/html&gt;</font></p>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">На рис. 7.1\n";
echo "изображен результат выполнения сценария\n";
echo "для каталога с несколькими главами этой\n";
echo "книги.</font></p>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\">&nbsp;<img border=\"0\" src=\"7.1.jpg\" width=\"495\" height=\"339\"></font></p>\n";
echo "<b><i>\n";
echo "<p><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Рис. 7.1. </font></font></i></b><i><font size=\"3\" face=\"Times New Roman\"><font COLOR=\"#000000\">Вывод\n";
echo "структуры каталога на сервере с\n";
echo "использованием сценария sitemap.php</font></font></p>\n";
echo "</i><b>\n";
echo "<p><A NAME=\"s\"></A><font color=\"#000000\" face=\"Times New Roman\" size=\"4\">Итоги</font></p>\n";
echo "</b>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">В этой главе\n";
echo "были представлены многие средства РНР,\n";
echo "предназначенные для работы с файлами. В\n";
echo "частности, мы рассмотрели следующие\n";
echo "вопросы:</font></p>\n";
echo "<ul>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">проверку\n";
echo "существования файлов;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">открытие и\n";
echo "закрытие файлов и потоков ввода/вывода;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">запись в\n";
echo "файл и чтение из него;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">перенаправление\n";
echo "файла в выходной поток;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">запуск\n";
echo "внешних программ;</font></li>\n";
echo "  <li><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">операции с\n";
echo "файловой системой.</font></li>\n";
echo "</ul>\n";
echo "<p><font COLOR=\"#000000\" size=\"3\" face=\"Times New Roman\">Материал\n";
echo "этой главы подготовил почву для следующей\n";
echo "главы, «Строки и регулярные выражения»,\n";
echo "поскольку при разработке web-приложений\n";
echo "обработка строк и операции ввода/вывода\n";
echo "очень тесно связаны.</font></p>\n";
echo "<table width=\"300\" border=\"0\" align=\"center\" cellpadding=\"3\" cellspacing=\"1\" bgcolor=\"#000066\" class=\"mtx1\">\n";
echo "<tr>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../Chapter 6/1.htm\"><strong>&lt;&lt;&lt;&nbsp;Назад</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../index.html\"><strong>Содержание</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "<td bgcolor=\"#CAEEFF\"><center>&nbsp;<a href=\"../Chapter 8/1.htm\"><strong>Вперед&nbsp;&gt;&gt;&gt;</strong></a>&nbsp;\n";
echo "</center></td>\n";
echo "</tr>\n";
echo "</table>\n";
echo "</BODY></HTML>\n";
?>
