Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Реферат: Обзор сетевых функций PHP

Название: Обзор сетевых функций PHP
Раздел: Рефераты по информатике, программированию
Тип: реферат Добавлен 06:04:06 29 февраля 2008 Похожие работы
Просмотров: 191 Комментариев: 3 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

В этой статье рассматривается использование сетевых функций популярного языка программирования 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.0\n\n");

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 и означает безошибочное выполнение операции (в данном случае передачи документа по запросу GET).

Установить нужный нам заголовок ответа мы можем с помощью функции Header(). Например, Header("Location://www.softerra.ru/freeos");

Запретить кэширование можно с помощью установки заголовка Pragma: no-cache. К сожалению одного этого заголовка явно не хватит для запрещения кэширования. Для полного запрета нужно использовать целых четыре заголовка. Установить с помощью Header их можно так:

Header("Pragma: no-cache");

Header("Cache-control: no-cache, must-revalidate");

Header("Expires: Mon, 01 Jan 1990 01:01:01 GMT");

Header("Last-Modified: ".gmdate("D, d M Y H:i:s")."GMT");

Первый из них устанавливает заголовок запрета кэширования согласно протокола HTTP/1.0, а второй – HTTP/1.1. Третий определяет задает дату в прошлом, а четвертый устанавливает дату последнего обновления документа. Функция gmdate() возвращает дату в нужном нам формате. Устанавливать все четыре заголовка крайне желательно, так как запрет кэширования может не сработать или на прокси-сервере или в броузере, и пользователь получит устаревшую версию документа.

Функции для работы с DNS

При написании сценариев вне зависимости от языка программирования часто возникает потребность разрешения IP-адреса в доменное имя и наоборот.

Преобразование IP-адреса в доменное имя выполняет функция

string gethostbyaddr(string $ip_address);

В случае ошибки возвращается IP-адрес.

Преобразование имени хоста в IP-адрес выполняет функция

string gethostbyname(string $host);

Если вам нужно получить все IP-адреса хоста с именем $host, используйте функцию

array gethostbynamel(string $host);

В листинге 4 применена именно функция gethostbynamel.

Листинг 4. Получение всех IP-адресов хоста $host

<?

$host="www.yahoo.com";

$ips=gethostbynamel($host);

foreach($ips as $ip) echo $ip;

?>

Определить почтовик для указанного хоста hostname можно с помощью функции

int getmxrr(string hostname, array mxhosts, array [weight]);

Данная функция запрашивает DNS на предмет наличия записей MX для указанного хоста.

Следующие функции никакого отношения к DNS не имеют, но чтобы не создавать другого раздела в статье, я описал их здесь.

int getprotobyname(string name);

Функция getprotobyname() возвращает номер протокола, который соответствует имени $name.

Обратная ей функция

string getprotobynumber(int number);

возвращает имя протокола по его номеру.

Функция

int getservbyname(string service, string protocol);

возвращает номер порта Internet-сервиса, название которого указано в параметре $service. Второй параметр функции – это протокол: tcp или udp.

Например, оператор

echo getservbyname("ftp", "tcp");

выведет в окно броузера число 21.

Для функции getservbyname() также существует обратная ей:

string getservbyport(int port, string protocol);

При использовании функции getservbyport() нужно указать номер порта и протокол (tcp или udp) и, как результат, вы получите название Internet-сервиса.

Например,

echo getservbyport(21, "tcp");

выведет в окно броузера название сервиса – ftp.

Функции протоколирования

Иногда нужно записать некоторую информацию, например, сообщение об ошибке, в системный журнал syslog. В PHP для этого предусмотрена целая серия функций:

int openlog(string ident, int option, int facility);

int syslog(int priority, string message);

int closelog(void);

Первая из них открывает соединение с демоном syslog. Вторая – порождает системное сообщение (другими словами записывает сообщение с указанным приоритетом в протокол). Функция closelog() закрывает соединение протокола.

Отправка сообщения

Я не открою Америки, если заявлю, что для отправления почты в PHP используется функция mail. Здесь я только приведу несколько рекомендаций относительно использования этой функции.

Напомню формат вызова функции:

mail(string $to, string $subject, string $msg [, string $headers]);

Например,

mail("root@localhost", "Test", "Message\nLine2", "From: den@localhost\n", "Reply-To: den@localhost\n");

Все работает хорошо до тех пор, пока не начинаются проблемы с кодировками. Для указания кодировки нужно установить заголовок

Content-type: text/plain; charset=koi8-r

Для преобразования самих кодировок используется функция convert_cyr_string(). Использовать ее предельно просто, например,

convert_cyr_string($msg,"k","w");

Этим вызовом функции convert_cyr_string() мы преобразуем кодировку koi8-r в windows-1251. Разумеется, заголовок Content-type нужно изменить на

Content-type: text/plain; charset=win-1251

При использовании функции mail целесообразно хранить все заголовки в теле письма. Тогда один раз вызвав функции convert_cyr_string() мы конвертируем все письмо в нужныю нам кодировку. В этом случае вызов функции mail должен быть произведен так:

mail("root@localhost","",$msg);

Значение переменной $msg будет таким:

$msg="From: Денис <den@localhost>\n

To: Администратор <root@localhost>\n

Content-type: text/plain; charset=win-1251\n

\n

Текст сообщения

...

Обратите внимание, что после всех заголовков должно следовать два символа новой строки \n: один после последнего заголовка, а другой перед текстом сообщения.

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений22:33:13 18 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
15:57:03 24 ноября 2015
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
00:53:58 24 ноября 2015

Работы, похожие на Реферат: Обзор сетевых функций PHP

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(150348)
Комментарии (1830)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru