Реферат: Обзор сетевых функций PHP
В этой статье рассматривается использование сетевых функций популярного языка программирования PHP. При написании этой статьи я решил отойти от общепринятой схемы, которая употребляется в руководстве по PHP:
«тип название (параметры) – описание»
Наоборот, в статье собраны полезные практические примеры. Из-за большого объема информации (язык PHP предназначен для Web-программирования, поэтому достаточно большую часть функций можно назвать сетевыми), я ограничусь только теми, которые использую наиболее часто.
Переменные окружения интерфейса CGI
При использовании интерфейса CGI (Common Gateway Interface) программисту доступно множество переменных окружения. Сейчас мы рассмотрим наиболее полезные в нашем случае переменные (см. таблицу 1).
Переменные окружения можно использовать в программе также как обыкновенные переменные. Например, для вывода IP-адреса клиента достаточно одного оператора:
echo $REMOTE_ADDR
Таблица 1.
Переменная | Описание |
HTTP_USER_AGENT |
С помощью этой переменой можно определить броузер пользователя, а также его операционную систему. Например, для Netscape, запущенным под Linux, эта переменная будет содердать значение: Mozilla/4.7 [en] (Linux; I) Для Internet Explorer 5.0 и Win98: Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt) |
HTTP_HOST | Содержит доменное имя сервера, на котором запущен сценарий. |
SERVER_PORT | Порт сервера, к которому обратился броузер. Обычно используется порт 80. |
REMOTE_ADDR | Содержит IP-адрес клиента, то есть IP-адрес пользователя, который запустил броузер |
REMOTE_PORT | Порт для получения ответа сервера. Этот порт закрепляется за каждой запущенной копией броузера |
Получение документа по протоколу HTTP
Получить документ по протоколу HTTP довольно просто:
Листинг 1. Получение документа по HTTP
<?
1. $file = join( '', file( 'http://localhost/index.html' ) );
2. echo $file;
?>
В первой строке листинга 1 мы получаем весь документ в строку $file, а второй – отправляем документ в броузер. Функция file() возвращает массив строк. N-ый элемент этого массива соответствует N-ой строке файла.
Если нас интересует HTML-код получаемого документа, вывести код в броузер поможет листинг 2, который я позаимствовал из руководства по PHP.
Листинг 2. Вывод HTML-кода документа
<?
1. $fcontents = file( 'http://localhost' );
2. while ( list( $line_num, $line ) = each( $fcontents ) ) {
3. echo "<b>Line $line_num:</b> " . htmlspecialchars( $line) . "<br>\n";
4. }
?>
Работа с сокетами
Функция file() (равно как и fopen() ) позволяет нам работать только с содержимым файла, который получен по тому или иному протоколу. Предположим, что нас интересуют заголовки, переданные сервером. Получить эти заголовки мы можем с помощью функции
int fsockopen(string $host, int $port, [, int &$errno] [, string &$errstr])
--> ЧИТАТЬ ПОЛНОСТЬЮ <--