Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
otvety_veb_1.doc
Скачиваний:
7
Добавлен:
01.04.2025
Размер:
739 Кб
Скачать
☆
  1. Протокол cgi и его характеристики. Область применения. Методы передачи данных от веб сервера в cgi программу и из cgi программы веб серверу.

CGI (CommonGatewayInterface, общий интерфейс шлюза) -- протокол для запуска внешних по отношению к web-серверу приложений (CGI-скриптов), регулирует коммуникацию между HTTP-сервером и CGI-скриптами.

Данная спецификация определяет стандартный способ обмена данными между прикладной программой и HTTP-сервером. Спецификация была предложена для сервера NCSA и является основным средством расширения возможностей обработки запросов клиентов HTTP-сервером.

Область применения: формирование динамических веб-страниц. Прежде всего CGI используется при обработке HTML – форм. Также для создания счетчиков посещений, гостевых книг и чатовых систем.С помощью CGI можно создавать анимацию.

Типы запросов

Различают два типа запросов к CGI-скриптам: по методу GET и по методу POST. В свою очередь, запросы по методу GETподразделяются на запросы по типам кодирования: isindex и form-urlencoded, а запросы по методу POST —multipart/form-data и form-urlencoded.

В запросах по методу GET данные от клиента передаются скрипту в переменной окружения QUERY_STRING. В запросах по методу POST данные из формы передаются в потоке стандартного ввода скрипта. При передаче через поток стандартного ввода в переменной окружения CONTENT_LENGTH указывается число передаваемых символов.

Запрос типа ISINDEX — это запрос вида:

http://intuit.ru/somthing-cgi/cgi-script?word1+word2+word3

Главным здесь является список слов после символа " ?". Слова перечисляются через символ " + " и для кириллицы в шестнадцатеричные последовательности не кодируются. Последовательность слов после символа " ?" будет размещена в переменной окружения QUERY_STRING.

Запрос типа form-urlencoded — это запрос вида:

http://intuit.ru/somthing-cgi/cgi-script?field=word1&field2=word2

Данные формы записываются в виде пар " имя_поля-значение ", которые разделены символом " & ".

Приведенный пример — это обращение к скрипту по методу GET. Все символы после " ?" попадут в переменную окружения QUERY_STRING. При этом если в значениях полей появляется кириллица или специальные символы, то они заменяются шестнадцатиричным кодом символа, который следует за символом " % ".

При обращении к скрипту по методу POST данные после символа " ?" не будут размещаться в QUERY_STRING, а будут направлены в поток стандартного ввода скрипта. В этом случае количество символов в потоке стандартного ввода скрипта будет указано в переменной окружения CONTENT_LENGTH.

При запросе типа multipart/form-data применяется составное тело HTTP-сообщения, которое представляет собой данные, введенные в форме, и данные присоединенного внешнего файла. Это тело помещается в поток стандартного ввода скрипта. При этом к данным формы применяется кодирование как в form-urlencoded, а данные внешнего файла передаются как есть.

  1. Написать php программу, которая выводит все данные полученные от веб сервера.

Client

<!DOCTYPE HTML>

<html>

<head>

<meta charset="utf-8">

<title>Client for CGI script</title>

</head>

<body>

<form method="POST" action="http://192.1.2.3/pm/pm.cgi"enctype="multipart/form-data">

<p><b>Введите сообщение:</b></p>

<p><textarea rows="10" cols="70" name="data"></textarea></p>

<p><input type="submit" name="sub" value="Отправить"></p>

</form>

</body>

</html>

Serverpm.cgi

#!/usr/local/bin/php

<?php

echo $_SERVER["QUERY_STRING"];

?>

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]