Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Топ:
Особенности труда и отдыха в условиях низких температур: К работам при низких температурах на открытом воздухе и в не отапливаемых помещениях допускаются лица не моложе 18 лет, прошедшие...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Установка замедленного коксования: Чем выше температура и ниже давление, тем место разрыва углеродной цепи всё больше смещается к её концу и значительно возрастает...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Взаимодействие сервера (серверной программы) и браузера осуществляется в виде запросов и ответов. Когда мы вводим в адресной строке браузера строку string, браузер последовательно выполняет следующие действия:
1. Выделяет из нее имя сервера и порт (если он указан),
2. Устанавливает соединение с сервером и посылает ему запрос:
GET string HTTP/1.0\n.....разная информация..... \n\n В запросе \n означает перевод на новую строку, а n/n/— маркер окончания запроса. Если сервер не получит маркера окончания, то запрос он обрабатывать не будет.
После строки, начинающейся со слова GET (так называемой GET -строки) в запросе могут содержаться другие строки. Эти строки называются заголовками, впрочем, как и сама GET -строка. Заголовков может быть довольно много. Их формирует браузер. Однако для запроса документа нужен только один GET. Чуть позже мы рассмотрим заголовки подробнее, а сейчас займемся разбором переданных сценарию параметров.
Если браузер вызывает сценарий, то, как правило, он передает ему какие-нибудь параметры:
GET сценарий?параметр=значение&параметр=значение НТТР/1.0\n
Как видите, после имени запрашиваемого документа следует знак вопроса, а за ним — строка параметров.
Формирование ответа сервером
Для формирования ответа сервера будем использовать специальный сценарий, который мы напишем на языке Си. Этот сценарий должен быть откомпилирован и помещен в каталог CGI -сценариев. Все, что будет делать сценарий, это отображать присланные ему параметры в окне браузера. При этом он не будет заниматься непосредственным разбором параметров, а только выведет все переданные параметры в браузер. Если вы не знаете языка Си, ничего страшного (хотя ничего хорошего в этом нет). Ниже приведено подробное описание сценария, так что вы без труда поймете назначение каждой строки сценария.
Простейшее CGI-приложение:
/* cgi.c - простейшее CGI-приложение */
#include <stdio.h>
#include <stdlib.h>
Int main()
{
char *Remote_IP = getenv("REMOTE_ADDR");
char *Query_String = getenv("QUERY_STRING");
printf("Content-type: text/html\n\n");
printf ("<htmlxbody><hl>Привет!</hl><p>");
printf("Ваш IP: %s", Remote_IP);
printf("<р>Переданные вами параметры: %s",Query_String);
printf("</body></html>");
return 0; }
Сценарий сначала получает значение переменной окружения REMOTE_ADDR, а потом — значение переменной QUERY_STRING. Первая содержит значение IP -адреса удаленного пользователя, а вторая — строку переданных параметров. Для обращения к переменным окружения в Си используется функция getenvQ.
Затем сценарий выводит на стандартный вывод значения обеих переменных. Вот здесь и заключается огромная хитрость CGI. Если запустить программу просто в консоли, а не через браузер, то на экране мы увидим: Content-type: text/html <html><body><hl>Пpивeт!</h1><p>Ваш IP: <p>Переданные вами параметры: </body></html> Значения переменных окружения REMOTE_ADDR и QUERY_STRING будут недоступны, так как эту программу запустили мы сами, а не сервер. Сервер, запустив программу, считает все данные, которые программа выводит на стандартный вывод (stdout) и передает программе пользователя — браузеру.
Таким образом, если запустить программу, используя браузер, то в окне браузера мы увидим (при условии, что передали такие параметры: name=Denis&email=den@localhost): Привет! Ваш IP: 127.0.0.1 Переданные вами параметры: name=Denis&email=den@localhost
Программисту осталось сделать малое — только разобрать пары: параметр = значение. Он должен вручную (в смысле сами написать программу разбора) прочитать строку параметров, создать двумерный массив, содержащий имена параметров и их значения. Если понадобится имя параметра, необходимо перебрать все элементы массива в поисках нужного имени параметра. Язык РНР сам выполняет разбор параметров командной строки. Для обращения к значению параметра можно использовать имя параметра: echo "Ваше имя: $name"; echo "Email: $email";
Кроме того, как видно из этого сценария, РНР сам создает переменные, которые называются так же, как и переданные параметры. Это значит, что если сценарию передать параметр email, то в процессе работы сценария (а именно — сразу после его запуска) появится переменная $email, с которой можно будет работать, как с обыкновенной переменной.
Метод POST
Если используется метод POST, переданные сценарию параметры не отображаются в окне браузера. Да и сама передача происходит иначе: POST сценарий HTTP/ 1.О\n. Content-lenath:5\n\n Hello
Сам блок пересылаемых данных находится уже после маркера окончания. Благодаря этому достигается принципиальная особенность метода POST. Эта особенность заключается в том, что при такой передаче данных сервер никак их не интерпретирует, а сразу передает сценарию. Это означает, что сценарий будет запущен сразу же после окончания заголовков (\n\n) и сервер просто передает ему POST -данные. Потом сценарий должен самостоятельно прочитать определенное число байтов, указанное в заголовке Content-length (длина слова Hello составляет пять символов). Поэтому при использовании метода POST всегда необходимо указывать значение переменной Content-length.
Параметры, переданные методом POST, будут преобразованы в переменные, с которыми можно работать в своем сценарии.
Метод POST обычно используется для передачи больших объемом данных, например, при загрузке файлов на сервер или же. когда нужно скрыть значения передаваемых параметров от глаз пользователя. Дело в том, что передаваемые параметры и их значения не отображаются в окне браузера, как это происходит с методом GET.
Переменные окружения CGI
Мы уже знакомы с двумя переменными окружения — REMOTE_ADDR и QUERY_STRING. Переменные окружения в языке РНР можно использовать, как самые обыкновенные переменные:
echo "IP: $REMOTE ADDR";
echo "Параметры: $QUERY_STRING ";
Переменные окружения можно разбить на четыре большие группы:
* Формируемые сервером переменные.
* Специальные переменные сервера Apache.
* Переменные HTTP -полей запроса.
* Переменные SSL -соединения (защищенного соединения).
Первые три группы представлены в таблице
Таблица 1.1. Формируемые сервером переменные
| Переменная | Описание |
| AUTH_TYPE | Используемая схема аутентификации |
| CONTENT_LENGTH | Длина содержимого |
| CONTENT_TYPE | М1МЕ-тип содержимого, например text/html |
| GATEWAY_INTERFACE | Версия CGI |
| PATH_INFO | НТТР-путь к сценарию |
| PATH_TRANSLATED | Полный путь к сценарию |
| REMOTE_ADDR | 1Р-адрес запрашивающего компьютера-клиента |
| REMOTE_HOST | Доменное имя запрашивающего компьютера-клиента |
| REMOTE_PORT | Доменное имя запрашивающего компьютера |
| REMOTE_USER | Порт, закрепленный за браузером для получения ответа от сервера |
| QUERY_STRING | Имя пользователя прошедшего аутентификацию |
| SERVER_ADDR | Строка переданных серверу параметров |
| SERVER_NAME | 1Р-адрес сервера |
| SERVER_PORT | Доменное имя сервера |
| SERVER_PROTOCOL | ТСР-порт Wеb-сервера. Обычно 80 |
| SERVER_SOFTWARE | Версия протокола НТТР |
| SERVER_NAME | Программное обеспечение сервера |
| SCRIPT_NAME | НТТР-путь к сценарию |
Таблица 1.2. Специальные переменные сервера Apachе
| Переменная | Описание |
| DOCUMENT_ROOT | Физический путь к корневому WWW-каталогу сервера |
| SERVER_ADMIN | Адрес электронной почты администратора сервера |
| SERVER_SIGNATURE | Подпись серверов |
Таблица 1.3. Переменные НТТР-полей запроса
| HTTP_HOST | Имя вертуального хоста, которому адресован запрос |
| HTTP_USER_AGENT | Програмное обеспичение вертуального хоста |
| HTTP_ACCEPT | Список поддерживаемых клиентов типов содержимого |
| HTTP_ACCEPT_LANGUAGE | Список поддежииваемых языковв в порядке предпочтения |
| HTTP_ACCEPT_ENCODING | Список поддежииваемых методов сжатия |
| HTTP_ACCEPT_CHARSET | Список поддежииваемых кодировок |
| HTTP_CONNECTION | Тип соединения(если после ответа на запрос не нужно разрывать соединение, и если после ответа на запрос нужно закрыть соединение) |
| HTTP_REFERER | В этом поле браузер передает URL-реурса, который ссылается на наш сервер |
| HTTP_X_FORWARDED_FOR | Если пользователь работает через прокси сервер, то в этом поле будет 1Р-адресузла, обратившегося к прокси серверу. Еслт данное поле уже содержит значение то новое значение будет добавленно через запятую |
|
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!