Файл: ycheb/html_teach/28.php
Строк: 82
<?php
include '../../config.php';
$title='Учебник HTML';
aut();
head();
?>
<html><head>
<title> HTML учебник / Windows CGI интерфейс / CGI файл данных </title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="keywords" content="HTML учебник Windows CGI интерфейс CGI файл данных">
<meta name="description" content="HTML учебник: Windows CGI интерфейс CGI файл данных">
</head>
<body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#333333" link="#333333" vlink="#333333" bgcolor="#f0f7ef">
<table width="80%" align="center"><tr><td>
<!--заголовок--><table width="100%" cellpadding=1 cellspacing=0 border=0 bgcolor=#647062><tr><td><table width="100%" cellpadding=3 cellspacing=0 border=0 bgcolor=#ffffff><tr><td class=r align=middle><A href="index.php">Содержание</a> / Windows CGI интерфейс / CGI файл данных </td></tr></table></td></tr></table><!--//-->
<H2>CGI файл данных </H2>
<P>Сервер передает данные CGI программам через Windows "private
profile" afqk, в формате "параметр-значение" (windows INI файл). CGI
программа может прочитать данный файл и получит все данные,
передаваемые ей из формы, а также автоматически генерируемые
броузером данные. </P>
<P>CGI файл данны состоит из следующих секций:
<UL>
<LI>[CGI]
<LI>[Accept]
<LI>[System]
<LI>[Extra Headers]
<LI>[Form Literal]
<LI>[Form External]
<LI>[Form Huge]
<LI>[Form File] </LI></UL>
<H3>Секция [CGI] </H3>
<P>Данная секция содержит большинство специфических CGI параметров
(тип дотупа, тип запроса, дополнительные заголовки, определенные в
других секциях и т.п.). Каждое значение представлено ввиде
символьной строки. Если значение является пустой строкой, значит
данный параметр был опущен. Tсписок параметров данной секции
представлен ниже:
<DL><PRE> Request Protocol </PRE>
<DL>
<P>Название и модификация информационного протокола,
использованного для передачи данного запроса. Формат:
протокол/модификация. Пример: "HTTP/1.0". </P></DL></DL><PRE> Request Method </PRE>
<DL>
<DL>
<P>Метод, который использовался для данного запроса. Для HTTP
это "GET", "HEAD", "POST" и т.д. </P></DL></DL><PRE> Executable Path </PRE>
<DL>
<DL>
<P>Логический путь к исполняемой CGI программе, необходимый для
ссылки CGI программе на саму себя. </P></DL></DL><PRE> Logical Path </PRE>
<DL>
<DL>
<P>Запрос также может указывать к ресурсам, необходимым для
выполнения данного запроса. Данный параметр содержит путь в том
виде, который был получен сервером без мэпирования его на
физический путь на диске. </P></DL></DL><PRE> Physical Path </PRE>
<DL>
<DL>
<P>Если запрос содержит информацию о логическом пути, сервер
преобразует его к физическому пути (например, к пути к файлу на
диске) досупа согасно синтаксическим правилам операционной
системы. </P></DL></DL><PRE> Query String </PRE>
<DL>
<DD>Информация, размещающаяся после ? в URL вызываемой CGI
программы. Сервер оставляет эту информацию без изменений в том
виде, в котором она была помещена в URL. </DD></DL><PRE> Request Range </PRE>
<DL>
<DD>Byte-range спецификация получаемая вместе с запросом (если
есть). Смотри текущий Internet Draft (или RFC), описывающий
расширение HTTP для получения более полной информации. Сервер
должен поддерживать работу CGI программ в byte-ranging. </DD></DL><PRE> Referer </PRE>
<DL>
<DD>URL документа, содержащего ссылку на данную CGI программу.
Надо заметить, что некоторые броузеры закрывают данную возможность
и не дают ее использовать. </DD></DL><PRE> From </PRE>
<DL>
<DD>E-mail адрес пользователя броузера. Надо заметить, что данный
параметр присутствует с спецификации HTTP, но не используется
большинством броузером из соображений секретности. </DD></DL><PRE> User Agent </PRE>
<DL>
<DD>Строка, описывающая программное обеспечение броузера. Не
генерируется большинством броузеров. </DD></DL><PRE> Content Type </PRE>
<DL>
<DD>Данный параметр содержит MIME-тип данных, посланных клиентом
вместе с полями из формы, если эти данные были посланы. Формат:
type/subtype. </DD></DL><PRE> Content Length </PRE>
<DL>
<DD>Для запросов, с которыми посланы дополнительные данные в это
поле заносится длина посланных данных в байтах. </DD></DL><PRE> Content File </PRE>
<DL>
<DD>Для запросов, содержащих дополнительные данные, посланные
пользователем, этот параметр содержит имя файла, в которое
WEB-сервер записывает эти данные. В дальнейшем, пользовательская
программа может считать эти данные. Параметр содержит полнуй путь
к файлу данных. </DD></DL><PRE> Server Software </PRE>
<DL>
<DD>Название и версия серверного программного обеспечения,
обработавшего запрос и вызвавшего CGI-программу. Формат:
name/version. </DD></DL><PRE> Server Name </PRE>
<DL>
<DD>Сетевое имя сервера или псевдоним, необходимый для ссылающихся
на себя URL Этот параметр (в комбанации с параметром ServerPort)
может быть использован для вычисления полного URL к серверу.
</DD></DL><PRE> Server Port </PRE>
<DL>
<DD>Номер порта, по которому работает сервер. </DD></DL><PRE> Server Admin </PRE>
<DL>
<DD>E-mail адрес администратора сервера. Данный параметр необходим
длягенерации сообщений об ошибках и отправки данных сообщений
администратору сервера или для генерации форм с URL "mailto:".
</DD></DL><PRE> CGI Version </PRE>
<DL>
<DD>Версия спецификации CGI. Формат: CGI/версия. Для данной
версии, "CGI/1.2 (Win)". <PRE> Remote Host </PRE>
<DL>
<DD>Сетевое имя хоста клиента, если доступно. Данный параметр
может быть использован для опознавание клиента. </DD></DL><PRE> Remote Address </PRE>
<DL>
<DD>Сетевой (IP) адрес клиента. Данный параметр может быть
использован для проверки пользователя если отсутствует сетевое
имя. </DD></DL><PRE> Authentication Method </PRE>
<DL>
<DD>Если используется защищенный вызов CGI программы, это
протокол-зависимый метод аутентификации, используемый для
аутентификации пользователя. </DD></DL><PRE> Authentication Realm </PRE>
<DL>
<DD>Если используется защищенный вызов CGI программы, это
протокол-зависимый сервис, используемый для аутентификации
пользователя. Список пользователей для полученного вида сервиса
iпроверяется для аутентификации пользователя. </DD></DL><PRE> Authenticated Username </PRE>
<DL>
<DD>Если используется защищенный вызов CGI программы, это имя
пользователя, которое клиент использует для аутентификации при
доступе к CGI-программе. </DD></DL>
<H3>Секция [Accept] </H3>
<P>Данная секция содержит типы данных, посылаемых клиентом,
найденные в заголовке запроса в виде </P><PRE> Accept: type/subtype {parameters} </PRE>
<P>Если данные параметры присутствуют (например, "q=0.100") , они
передаются как значения параметра Accept. Для каждого типа
передаваемых данных заводится свой параметр Accept. </P>
<H3>Секция [System] </H3>
<P>Данная секция содержит параметры, специфические для Windows
реализации CGI:
<DL><PRE> GMT Offset </PRE>
<DD>Количество секунд, которое необходимо добавить к времени по
Гринвичу для вычисления локального времени клиента. </DD></DL><PRE> Debug Mode </PRE>
<DL>
<DD>Данный параметр имеет значение "Yes" если включен режим
"CGI/script tracing" на сервере. </DD></DL><PRE> Output File </PRE>
<DL>
<DD>Полный путь к файлу, в который необходимо поместить данные,
отсылаемые сервером клиенту после завершения работы программы.
</DD></DL><PRE> Content File </PRE>
<DL>
<DD>Полный путь к файл у в котором содержится дополнительная
информация, поступающая вместе с запросом. </DD></DL>
<H3>Секция [Extra Headers] </H3>
<P>Данная секция содержит "дополнительные" заголовки, которые
включены в запрос в виде "параметр=значение". Сервер должен
раскодировать как параметр, так и его значение прежде чем они
будут помещены в файл данных CGI. </P>
<H3>Секция [Form Literal] </H3>
<P>Если запрос от клиента пришел в виде HTTP POST из HTML формы (с
типом содержимого application/x-www-form-urlencoded или
multipart/form-data), то сервер раскодирует данные из формы и
поместит их в секцию [Form Literal]. </P>
<P>Для URL-кодированных данных формы, строка передаваемых
параметров выглядит как
"параметр=значение&параметр=значение&...", где значения
находятся в url-кодированном формате. Сервер разделяет
"параметр=значение" по символу '&', затем разделяет собственно
"параметр" и "значение", декодирует "значение" и помещает
результат в виде "параметр=раскодированное_значение" в секцию
[Form Literal]. </P>
<P>Для многостраничных данных строка данных представляется в
многостраничном MIME формате, где каждое поле представлено как
отдельная часть (файл). сервер декодирует имена и значение каждой
части и размещает их в формате "параметр=значение" в секции [Form
Literal]. </P>
<P>Если форма содержит какие-либо элементы <TT>SELECT
MULTIPLE</TT>, то будет создано несколько строк с вида
"параметр=значение" с одинаковым именем "параметра". В этом случае
генерирует нормальную строку "параметр=значение" для первого
встречающегося элемента, а каждый следующий представляет в виде
"параметр_X=значение", где "X" - увеличивающийся счетчик. </P>
<H3>Секция [Form External] </H3>
<P>Если размер декодированной строки превышает 254 символа или
декодированная строка содержит управляющие символы, такие, как
перевод строки, возврат каретки, двойные кавычки и т.д., то сервер
помещает данное значение в отдельный временный файл, а в секцию
[Form External] помещает строку в виде: </P><PRE> параметр=путь длина </PRE>
<P>где <I>путь</I> - это полный путь и имя временного файла,
содержащего декодированное значение параметра, а длина - длина в
байтах этого файла. </P>
<H3>Секция [Form Huge] </H3>
<P>Если общая длина строки с кодированными параметрами превышает
65,535 байт, то сервер не выполняет декодирование, а оставляет
данный в Content File, а в секцию [Form Huge] помещает строки в
виде: </P><PRE> параметр=смещение длина </PRE>
<P>где <I>смещение</I> - это смещение от начала Content File по
которому находится требуемый параметр, а <I>длина</I> - длина в
байтах значения выбранного параметра. Вы можте использовать
<I>смещение</I> для выполнения поиска начала значения выбранного
вами параметра и использовать длину для чтения значения выбранного
параметра. Не забывайте, что если параметр закодирован, то вам
необходимо раскодировать его перед использованием. </P>
<H3>Секция [Form File] </H3>
<P>Если запрос пришел в виде <TT>multipart/form-data</TT>, то он
может содержать один или несколько загруженных с клиента файлов. В
этом случае каждый загруженный файл размещается в специальном
временном файле, а в секции [Form File] строки имеют тот же
формат, что и секции [Form External]. каждая строка параметра в
этом случае выглядит так: </P><PRE> параметр=[полный_путь_к_файлу] длина тип ссылка [имя_файла] </PRE>
<UL>
<P>где <I>полный_путь_к_файлу </I>- это путь к временному файлу,
содержащему загруженный файл, <I>длина</I> - длина в байтах
загруженного файла, <I>тип</I> - тип MIME загруженного
файла, <I>ссылка</I> - способ кодировки загруженного файла и
<I>имя_файла</I> - исходное название загруженного файла.
Использование квадратных скобок обязательно, поскольку имя файла
и путь могут содержать символы пробела. </P></UL>
<H3>Пример декодированных значений формы </H3>
<P>В данном примере форма содержит небольшое поле, SELECT MULTIPLE
с 2-мя небольшими секциями, поле длиной 300 символов, поле,
содержащее специальные символы и поле длиной 230KB. </P>
<P>[Form Literal] <BR>smallfield=123 Main St. #122
<BR>multiple=first selection <BR>multiple_1=second selection
<BR><BR>[Form External] <BR>field300chars=C:TEMPHS19AF6C.000 300
<BR>fieldwithlinebreaks=C:TEMPHS19AF6C.001 43 <BR><BR>[Form
Huge] <BR>field230K=C:TEMPHS19AF6C.002 276920 <BR></P>
</td></tr></table>
</body></html>
<?php
echo gb.'<a href="../../ycheb">Учебники</a>'.div;
echo gb.'<a href="'.H.'enter">Прихожая</a>'.div;
foot(); ?>