ReferatWorld.ru

Обзор сетевых функций 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])

Данная функция позволяет инициализировать потоковое соединение с указанным хостом и программой, которая связана с указанным портом. Кроме того, эта функция поддерживает Unix-сокеты. При этом параметр $hostname будет использован как путь к файлу сокета, а параметр $port должен быть равен 0.

После установления соединения функция возвращает обыкновенный дескриптор файла. С этим дескриптором могут работать функции fread(), fwrite(), fgets(), feof() и другие.

В случае ошибки функция возвратит false и, если указаны необязательные параметры $errno и $errstr, соответственно, номер ошибки и текст сообщения об ошибке.

Рассмотрим листинг 3 – «Виртуальный браузер»: мы посылаем серверу HTTP-запрос GET и, получив ответ, выводим его в броузер.

Листинг 3. «Виртуальный браузер»

<?

// Подключаемся к серверу

1. $fsoc = fsockopen("localhost",80);

2. fputs($fsoc, "GET / HTTP/1.0nn");

3. echo "<pre>";

4. while (!feof($fsoc))

5. echo HtmlSpecialChars(fgets($fsoc,1000));

6. echo "</pre>";

// Отключаемся от сервера

7. fclose($fsoc);

?>

Как я уже отмечал выше, при использовании функции fsockopen мы получаем весь ответ сервера – вместе с заголовками. Функцию HtmlSpesialChars() мы используем для корректного отображения HTML-кода в текстовом формате. В броузере мы должны получить примерно следующее:

HTTP/1.1 200 OK

Date: Sat, 16 Mar 2002 10:46:59 GMT

Server: Apache/1.3.12 (Linux)

Last-Modified: Sat, 20 Nov 1999 13:29:40 GMT

ETag: "0-574-3836a244"

Accept-Ranges: bytes

Content-Length: 1396

Connection: close

Content-Type: text/html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">

<HTML>

sp;<HEAD>

<TITLE>Test Page for Apache Installation</TITLE>

</HEAD>

...

Ответ сервера HTTP/1.1 200 OK соответствует коду ответа 200 и означает безошибочное выполнение операции (в данном случае передачи документа по за

Внимание, отключите Adblock

Вы посетили наш сайт со включенным блокировщиком рекламы!
Ссылка для скачивания станет доступной сразу после отключения Adblock!

Скачать
Рефераты по информатике и программированию В этой статье рассматривается использование сетевых функций популярного языка программирования PHP. При написании этой статьи я решил отойти от
Оценок: 1005 (Средняя 5 из 5)

Одними из наиболее популярных услуг на рынке IT-технологий являются создание и продвижение лендингов. Они способны положительно влиять на деятельность любого бизнес-проекта в интернете. Судя по многочисленным отзывам, заказавшие создание лендингов люди ни разу не пожалели о потраченных деньгах. Они вложили в будущее, которое неразрывно связано с интернетом. Всё больше и больше предпринимателей обращаются к услугам разных агентств, веб-студий, чтобы заказать создание лендинга у профессионалов.

© 2017 - 2022 ReferatWorld.ru