<? include 'head.php' ?>
<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-кодированных данных формы, строка передаваемых 
  параметров выглядит как 
  "параметр=значение&amp;параметр=значение&amp;...", где значения 
  находятся в url-кодированном формате. Сервер разделяет 
  "параметр=значение" по символу '&amp;', затем разделяет собственно 
  "параметр" и "значение", декодирует "значение" и помещает 
  результат в виде "параметр=раскодированное_значение" в секцию 
  [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> - тип &nbsp;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:\TEMP\HS19AF6C.000 300 
  <BR>fieldwithlinebreaks=C:\TEMP\HS19AF6C.001 43 <BR><BR>[Form 
  Huge] <BR>field230K=C:\TEMP\HS19AF6C.002 276920 <BR></P>
			
  </td></tr></table>

 



</body></html>
<? include 'foot.php' ?>