Привет, Гость!
![]() |
![]() |
![]() |
Основы CGI
PATH_INFO HTTP-путь к сценарию
PATH_TRANSLATED Полный путь к сценарию
REMOTE_ADDR IP-адрес запрашиваемого компьютера-клиента
REMOTE_HOST Доменное имя запрашивающего компьютера (если доступно). Доменное имя определяется web-сервером с помощью службы DNS. Директива HostNameLookups сервера Apache разрешает (или запрещает) преобразование IP-адреса в доменное имя.
REMOTE_PORT Порт, закрепленный за браузером для получения ответа от сервера
REMOTE_USER Имя пользователя, прошедшего аутентификацию
QUERY_STRING Строка переданных серверу параметров
SERVER_ADDR IP-адрес сервера
SERVER_NAME Доменное имя сервера. Определяется директивой ServerName файла конфигурации
SERVER_PORT TCP-порт Web-сервера. Обычно 80
SERVER_PROTOCOL Версия протокола HTTP. Например, HTTP/1.1
SERVER_SOFTWARE Программное обеспечение сервера
SCRIPT_NAME HTTP-путь к сценарию
SCRIPT_FILENAME Имя файла сценария в файловой системе сервера (физический путь). Например, /var/www/cgi-bin/script.cgi
Специальные переменные сервера Apache:
Переменная окружения
Описание переменной окружения
DOCUMENT_ROOT Физический путь к корневому www-каталогу сервера. Например, /var/www.html/
SERVER_ADMIN Адрес электронной почты администратора сервера
SERVER_SIGNATURE Подпись сервера. Например, "Apache/1.3.3 Server at www.somefirm.com Port 80"
Переменные HTTP-полей запроса:
Переменная окружения
Описание переменной окружения
HTTP_HOST Имя виртуального хоста, которому адресован запрос
HTTP_USER_AGENT Программное обеспечение удаленного пользователя. Обычно данная переменная окружения содержит название и версию браузера
HTTP_ACCEPT Список поддерживаемых клиентов типов содержимого. В последнее время вместо списка браузеры возвращают значение *.*, что означает "все типы"
HTTP_ACCEPT_LANGUAGE Список поддерживаемых языков в порядке предпочтения, например, ru, en
HTTP_ACCEPT_ENCODING Список поддерживаемых методов сжатия
HTTP_ACCEPT_CHARSET Список поддерживаемых кодировок
HTTP_CONNECTION
Тип соединения. Возможны два варианта:
Keep-alive - если после ответа на запрос не нужно разрывать соединение;
Close - если нужно закрыть соединение сразу после ответа на запрос.
HTTP_REFERER Значение поля REFERER. В этом поле браузер передает URL ресурса, который ссылается на наш сервер. Например, если пользователь перешел на сайт со страницы http://www.somehost.com/page.php, то значение поля REFERER будет http://www.somehost.com/page.php.
HTTP_X_FORWARDED_FOR Если пользователь работает через прокси-сервер, то в этом поле будет IP-адрес компьютера, обратившегося к прокси-серверу. Если данное поле уже содержит значение, то новое значение будет добавлено через запятую.
Заголовки HTTP
Заголовки HTTP используются для "общения" браузера и web-сервера, например, когда браузер запрашивает какой-либо документ, он посылает заголовок GET, а когда сервер возвращает тип документа, то он делает это ни как-нибудь, а в заголовке Content-type.
Мы уже частично рассматривали заголовки протокола HTTP, но теперь остановимся на них подробнее.
Итак, приведем список и краткое описание основных заголовков HTTP.
Заголовок Accept
Заголовок Accept предназначен для информирования сервера о типах данных, которые поддерживаются клиентом (браузером). В этом заголовке браузер перечисляет, какие типы документов он "понимает". Пере-
числение идет через запятую.
Используется переменная окружения HTTP_ACCEPT. Пример использования:
Accept: text/html, text/plain, image/jpeg
В последнее время вместо списка указывается значение *.*, что означает "все типы".
Заголовок Content-type
Данный заголовок предназначен для идентификации типа передаваемых данных. При этом заголовок Content-type использует переменную окружения CONTENT_TYPE. Обычно для этого заголовка указывается значение application/x-www-form-urlencoded. Таким образом, указывается формат, в котором все управляющие символы (т.е. символы, не являющиеся алфавитно-цифровыми) специально кодируются. О некоторых других MIME-типах вы можете узнать здесь.
Это тот самый формат передачи, который используется методами GET и POST.
Довольно распространен и другой формат, multipart/form-data.
Сервер никак не интерпретирует рассматриваемый заголовок, а просто передает его сценарию через переменную окружения.
Пример: Content-type: text/plain
Заголовок Content-length
Этот заголовок содержит строку, в которой записана длина передаваемых данных в байтах при использовании метода передачи POST. За заголовком закреплена одноименная переменная CONTENT_LENGTH.
Если задействуется метод GET, то этот заголовок отсутствует, и значит, переменная окружения не устанавливается.
Заголовок Cookie
В этом заголовке хранятся все Cookies. Данный заголовок использует переменную окружения HTTP_COOKIE. Для установки Cookies используется заголовок Set-Cookie.
Заголовок GET
Об этом заголовке мы упоминали ранее.
Заголовок GET использует следующие переменные окружения:
REQUEST_URI - запрашиваемый идентификатор ресурса;
QUERY_STRING - передаваемые сценарию параметры;
REQUEST_METHOD - метод передачи информации. В данном случае эта переменная будет содержать значение GET.
Заголовок Location
Получив заголовок Location вместе с указанным в нем URL, сервер немедленно переходит по указанному URL, не дожидаясь, пока тело документа загрузится:
Пример: Location: http://www.somehost.com/
Заголовок POST
Этот заголовок использует те же переменные окружения, что и заголовок GET (переменная REQUEST_METHOD содержит значение POST). Напомним, что данные методом POST можно передавать в конце заголовков.
Напомним формат заголовка POST: POST сценарий?параметры HTTP/1.0
Заголовок Pragma
Данный заголовок используется для различных целей, одна из которых - это запрет кэширования документа.
Пример заголовка: Pragma: no-cache
Заголовок Server
Данный заголовок содержит название и версию программного обеспечения сервера. Например:
Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b Dav/1.0.3 PHP/4.3.0 mod_perl/1.26 configured
Заголовок Referer
С помощью этого заголовка можно узнать ссылающийся на нас сервер. Это бывает полезно, когда нам необходимо узать обратные ссылки, например, при анализе эффективности сетевой рекламы.
Переменная окружения: HTTP_REFERER.
Заголовок User-Agent
Содержит версию браузера. Например: User-Agent: Mozilla/5.0 (compatible; Konqueror/3.0.0-10; Linux).
Переменная окружения: HTTP_REFERER.
Некоторые комментарии по HTTP-заголовкам
Мы ознакомились с названиями заголовков и соответствующим им переменным окружения.
Необходимо помнить основные приципы:
Все символы в верхнем регистре;
В начале имен добавляется HTTP_
Символы "-" заменяются знаком подчеркивания "_".
Передача заголовков HTTP в PHP
В PHP есть встроенные функции для работы с заголовками HTTP.
Для передачи заголовков HTTP предназначена функция header()
Приведем
PATH_TRANSLATED Полный путь к сценарию
REMOTE_ADDR IP-адрес запрашиваемого компьютера-клиента
REMOTE_HOST Доменное имя запрашивающего компьютера (если доступно). Доменное имя определяется web-сервером с помощью службы DNS. Директива HostNameLookups сервера Apache разрешает (или запрещает) преобразование IP-адреса в доменное имя.
REMOTE_PORT Порт, закрепленный за браузером для получения ответа от сервера
REMOTE_USER Имя пользователя, прошедшего аутентификацию
QUERY_STRING Строка переданных серверу параметров
SERVER_ADDR IP-адрес сервера
SERVER_NAME Доменное имя сервера. Определяется директивой ServerName файла конфигурации
SERVER_PORT TCP-порт Web-сервера. Обычно 80
SERVER_PROTOCOL Версия протокола HTTP. Например, HTTP/1.1
SERVER_SOFTWARE Программное обеспечение сервера
SCRIPT_NAME HTTP-путь к сценарию
SCRIPT_FILENAME Имя файла сценария в файловой системе сервера (физический путь). Например, /var/www/cgi-bin/script.cgi
Специальные переменные сервера Apache:
Переменная окружения
Описание переменной окружения
DOCUMENT_ROOT Физический путь к корневому www-каталогу сервера. Например, /var/www.html/
SERVER_ADMIN Адрес электронной почты администратора сервера
SERVER_SIGNATURE Подпись сервера. Например, "Apache/1.3.3 Server at www.somefirm.com Port 80"
Переменные HTTP-полей запроса:
Переменная окружения
Описание переменной окружения
HTTP_HOST Имя виртуального хоста, которому адресован запрос
HTTP_USER_AGENT Программное обеспечение удаленного пользователя. Обычно данная переменная окружения содержит название и версию браузера
HTTP_ACCEPT Список поддерживаемых клиентов типов содержимого. В последнее время вместо списка браузеры возвращают значение *.*, что означает "все типы"
HTTP_ACCEPT_LANGUAGE Список поддерживаемых языков в порядке предпочтения, например, ru, en
HTTP_ACCEPT_ENCODING Список поддерживаемых методов сжатия
HTTP_ACCEPT_CHARSET Список поддерживаемых кодировок
HTTP_CONNECTION
Тип соединения. Возможны два варианта:
Keep-alive - если после ответа на запрос не нужно разрывать соединение;
Close - если нужно закрыть соединение сразу после ответа на запрос.
HTTP_REFERER Значение поля REFERER. В этом поле браузер передает URL ресурса, который ссылается на наш сервер. Например, если пользователь перешел на сайт со страницы http://www.somehost.com/page.php, то значение поля REFERER будет http://www.somehost.com/page.php.
HTTP_X_FORWARDED_FOR Если пользователь работает через прокси-сервер, то в этом поле будет IP-адрес компьютера, обратившегося к прокси-серверу. Если данное поле уже содержит значение, то новое значение будет добавлено через запятую.
Заголовки HTTP
Заголовки HTTP используются для "общения" браузера и web-сервера, например, когда браузер запрашивает какой-либо документ, он посылает заголовок GET, а когда сервер возвращает тип документа, то он делает это ни как-нибудь, а в заголовке Content-type.
Мы уже частично рассматривали заголовки протокола HTTP, но теперь остановимся на них подробнее.
Итак, приведем список и краткое описание основных заголовков HTTP.
Заголовок Accept
Заголовок Accept предназначен для информирования сервера о типах данных, которые поддерживаются клиентом (браузером). В этом заголовке браузер перечисляет, какие типы документов он "понимает". Пере-
числение идет через запятую.
Используется переменная окружения HTTP_ACCEPT. Пример использования:
Accept: text/html, text/plain, image/jpeg
В последнее время вместо списка указывается значение *.*, что означает "все типы".
Заголовок Content-type
Данный заголовок предназначен для идентификации типа передаваемых данных. При этом заголовок Content-type использует переменную окружения CONTENT_TYPE. Обычно для этого заголовка указывается значение application/x-www-form-urlencoded. Таким образом, указывается формат, в котором все управляющие символы (т.е. символы, не являющиеся алфавитно-цифровыми) специально кодируются. О некоторых других MIME-типах вы можете узнать здесь.
Это тот самый формат передачи, который используется методами GET и POST.
Довольно распространен и другой формат, multipart/form-data.
Сервер никак не интерпретирует рассматриваемый заголовок, а просто передает его сценарию через переменную окружения.
Пример: Content-type: text/plain
Заголовок Content-length
Этот заголовок содержит строку, в которой записана длина передаваемых данных в байтах при использовании метода передачи POST. За заголовком закреплена одноименная переменная CONTENT_LENGTH.
Если задействуется метод GET, то этот заголовок отсутствует, и значит, переменная окружения не устанавливается.
Заголовок Cookie
В этом заголовке хранятся все Cookies. Данный заголовок использует переменную окружения HTTP_COOKIE. Для установки Cookies используется заголовок Set-Cookie.
Заголовок GET
Об этом заголовке мы упоминали ранее.
Заголовок GET использует следующие переменные окружения:
REQUEST_URI - запрашиваемый идентификатор ресурса;
QUERY_STRING - передаваемые сценарию параметры;
REQUEST_METHOD - метод передачи информации. В данном случае эта переменная будет содержать значение GET.
Заголовок Location
Получив заголовок Location вместе с указанным в нем URL, сервер немедленно переходит по указанному URL, не дожидаясь, пока тело документа загрузится:
Пример: Location: http://www.somehost.com/
Заголовок POST
Этот заголовок использует те же переменные окружения, что и заголовок GET (переменная REQUEST_METHOD содержит значение POST). Напомним, что данные методом POST можно передавать в конце заголовков.
Напомним формат заголовка POST: POST сценарий?параметры HTTP/1.0
Заголовок Pragma
Данный заголовок используется для различных целей, одна из которых - это запрет кэширования документа.
Пример заголовка: Pragma: no-cache
Заголовок Server
Данный заголовок содержит название и версию программного обеспечения сервера. Например:
Server: Apache/1.3.23 (Unix) (Red-Hat/Linux) mod_ssl/2.8.7 OpenSSL/0.9.6b Dav/1.0.3 PHP/4.3.0 mod_perl/1.26 configured
Заголовок Referer
С помощью этого заголовка можно узнать ссылающийся на нас сервер. Это бывает полезно, когда нам необходимо узать обратные ссылки, например, при анализе эффективности сетевой рекламы.
Переменная окружения: HTTP_REFERER.
Заголовок User-Agent
Содержит версию браузера. Например: User-Agent: Mozilla/5.0 (compatible; Konqueror/3.0.0-10; Linux).
Переменная окружения: HTTP_REFERER.
Некоторые комментарии по HTTP-заголовкам
Мы ознакомились с названиями заголовков и соответствующим им переменным окружения.
Необходимо помнить основные приципы:
Все символы в верхнем регистре;
В начале имен добавляется HTTP_
Символы "-" заменяются знаком подчеркивания "_".
Передача заголовков HTTP в PHP
В PHP есть встроенные функции для работы с заголовками HTTP.
Для передачи заголовков HTTP предназначена функция header()
Приведем
Комментарии (0)
Скачать Java книгу»php/mysql/pdo/js
В библиотеку