В этой статье рассматривается использование сетевых функций популярного языка программирования 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 «Line $line_num:». htmlspecialchars ($line). ««;