![]() |
Библиотека Интернет Индустрии I2R.ru |
||
Сетевые функции PHP (Обзор)Первоначально опубликовано на сайте"Софтерра", www.softerra.ru Обзор сетевых функций PHP Краткий обзор (с примерами) сетевых функций php: ведения протоколов; cgi и dns; сокеты и работа с сообщениями. В этой статье рассматривается использование сетевых
функций популярного языка программирования PHP. При написании этой статьи я решил
отойти от общепринятой схемы, которая употребляется в руководстве по PHP: Переменные окружения интерфейса
CGI Переменные окружения интерфейса CGIПри использовании интерфейса CGI (Common Gateway
Interface) программисту доступно множество переменных окружения. Сейчас мы рассмотрим
наиболее полезные в нашем случае переменные (см. таблицу 1). Таблица 1.
Получение документа по протоколу HTTPПолучить документ по протоколу HTTP довольно просто: Листинг 1. Получение документа по HTTP
В первой строке листинга 1 мы получаем весь документ
в строку $file, а второй – отправляем документ в броузер. Функция file() возвращает
массив строк. N-ый элемент этого массива соответствует N-ой строке файла. Листинг 2. Вывод HTML-кода документа
Работа с сокетамиФункция file() (равно как и fopen() ) позволяет
нам работать только с содержимым файла, который получен по тому или иному протоколу.
Предположим, что нас интересуют заголовки, переданные сервером. Получить эти заголовки
мы можем с помощью функции Листинг 3. «Виртуальный браузер»
Как я уже отмечал выше, при использовании функции 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 Ответ сервера HTTP/1.1 200 OK соответствует коду ответа 200 и означает безошибочное выполнение операции (в данном случае передачи документа по запросу GET). Установить нужный нам заголовок ответа мы можем
с помощью функции Header(). Например, Header("Location://www.softerra.ru/freeos");
Первый из них устанавливает заголовок запрета кэширования согласно протокола HTTP/1.0, а второй – HTTP/1.1. Третий определяет задает дату в прошлом, а четвертый устанавливает дату последнего обновления документа. Функция gmdate() возвращает дату в нужном нам формате. Устанавливать все четыре заголовка крайне желательно, так как запрет кэширования может не сработать или на прокси-сервере или в броузере, и пользователь получит устаревшую версию документа. Функции для работы с DNSПри написании сценариев вне зависимости от языка
программирования часто возникает потребность разрешения IP-адреса в доменное имя
и наоборот. Преобразование имени хоста в IP-адрес выполняет
функция Если вам нужно получить все IP-адреса хоста с
именем $host, используйте функцию В листинге 4 применена именно функция gethostbynamel. Листинг 4. Получение всех IP-адресов хоста $host
Определить почтовик для указанного хоста hostname
можно с помощью функции Следующие функции никакого отношения к DNS не имеют, но чтобы не создавать другого раздела в статье, я описал их здесь. int getprotobyname(string name); Обратная ей функция Функция Например, оператор Для функции getservbyname() также существует обратная
ей: При использовании функции getservbyport() нужно указать номер порта и протокол (tcp или udp) и, как результат, вы получите название Internet-сервиса. Например, Функции протоколированияИногда нужно записать некоторую информацию, например, сообщение об ошибке, в системный журнал syslog. В PHP для этого предусмотрена целая серия функций:
Первая из них открывает соединение с демоном
syslog. Вторая – порождает системное сообщение (другими словами записывает сообщение
с указанным приоритетом в протокол). Функция closelog() закрывает соединение протокола.
Отправка сообщенияЯ не открою Америки, если заявлю, что для отправления
почты в PHP используется функция mail. Здесь я только приведу несколько рекомендаций
относительно использования этой функции. Например, Все работает хорошо до тех пор, пока не начинаются
проблемы с кодировками. Для указания кодировки нужно установить заголовок Для преобразования самих кодировок используется
функция convert_cyr_string(). Использовать ее предельно просто, например, При использовании функции mail целесообразно хранить
все заголовки в теле письма. Тогда один раз вызвав функции convert_cyr_string()
мы конвертируем все письмо в нужныю нам кодировку. В этом случае вызов функции
mail должен быть произведен так:
Обратите внимание, что после всех заголовков должно
следовать два символа новой строки \n: один после последнего заголовка, а другой
перед текстом сообщения.
Денис Колисниченко |
|
| 2000-2008 г. Все авторские права соблюдены. |