Common Gateway Interface - средство расширения возможностей WWW технологии

Автор: Doremar Сайт: http://www.pauk2001.h1.ru/
   
   
   CGI-скрипт - программа написанная в соответствии со спецификацией Common Gateway Interface. CGI-скрипты могут быть написаны на любом языке программирования (C, C++, PASCAL, FORTRAN и т. п.) или командном языке (shell, cshell, командный язык MS-DOS, Perl и т. п.). Скрипт может быть написан даже на языке редактора EMAC в системах Unix
   
   Шлюз - это CGI-скрипт, который используется для обмена данными с другими информационными ресурсами Internet или приложениями-демонами. Обычная CGI- программа запускается сервером HTTP для выполнения некоторой работы, возвращает результаты серверу и завершает свое выполнение Механизмы обмена данными
   
   переменные окружения
   формат командной строки
   формат стандартного ввода
   формат стандартного вывода
   Список переменных окружения
   К общим переменным окружения относятся:
   
   SERVER_SOFTWARE - определяет имя и версию сервера
   SERVER_NAME - определяет доменное имя сервера
   GATEWAY_INTERFACE - определяет версию интерфейса
   К запрос-ориентированным относятся:
   
   SERVER_PROTOCOL - протокол сервера
   SERVER_PORT - определяет порт TCP, по которому осуществляется взаимодействие (80 порт)
   REQUEST_METHOD - определяет метод доступа к информационному ресурсу
   PATH_INFO - передает программе путь (адрес скрипта) в виде, указанном в HTML-документе
   PATH_TRANSLATED - то же, что и PATH_INFO, но только после подстановки сервером определенных в его конфигурации вставок
   SCRIPT_NAME - определяет адрес скрипта так, как он указан клиентом
   QUERY_STRING - определяет содержание запроса к скрипту
   Идентификация пользователя и его машины:
   
   REMOTE_HOST - доменный адрес машины, с которой осуществляется запрос
   REMOTE_ADDR - IP-адрес запрашивающей машины
   AUTH_TYPE - тип идентификации пользователя
   REMOTE_USER - идентификация пользователя
   REMOTE_IDENT - устанавливается сервером; предназначена для первоначального использования скрипта
   CONTENT_TYPE - определяет MIME-тип данных, передаваемых скрипту
   CONTENT_LENGTH - определяет размер данных в байтах, которые передаются скрипту
   Стандартный ввод CGI-скрипта
   
   Методы GET или Post
   CONTENT-LENGHT
   CONTENT-TYPE
   QUERY-STRING
   Стандартный вывод CGI-скрипта
   
   Заголовок
   CONTENT-TYPE
   Location
   Status
   Тело ответа (обычно текст)
   Применение CGI-скриптов
   Простейшие SHELL-скрипты
   Вызов внешней программы через SHELL
   Вызов модуля "С"
   Доступ к базам данных
   Imagemap
   Примеры SHELL-скриптов
   
   
   #!/bin/sh
   
   echo Content-type: text/plain
   
   echo
   
   echo This is the result of script execution.
   
   #The end of script
   
   
   
   #!/bin/sh
   
   echo Content-type: text/plain
   
   echo
   
   echo $REQUEST_METHOD
   
   echo $QUERY_STRING
   
   echo $CONTENT_TYPE
   
   echo $CONTENT_LENGTH
   
   
   
   #The end of script.
   
   #!/bin/sh
   
   echo Content-type: text/plain
   
   echo
   
   finger paul@polyn.kiae.su
   
   #The end of script.
   
   
   Пример С-программы
   
   #include <stdlib.h>;
   
   #include <sys/types.h>;
   
   main()
   
    {
   
    long i,n,uid;
   
    char input_ch[1024];
   
    char *env;
   
    env = getenv("CONTENT_LENGTH");
   
    /* Here we recieve a length */
   
    sscanf(env,"%d",&n);
   
    /* of input stream and form */
   
    for(i=0;i<;n;i++)
   
    /* command line */
   
    { input_ch[i]
   
   = getchar(); }
   
    input_ch[i] = '\000';
   
   
   
    printf("Content-type:
   
   text/html\n\n");
    /* First message of a CGI Programme */
   
   
   
    /* This message must be a first one */
   
   
   
    /* in output sream. */
   
   
   
    printf("<TITLE>
   
   C-cgi script.(example#1)</TITLE>\n");
   
    printf("<H3><I>
   
   Russian Research Center \"Kurchatov Institute\"
   <I></H3>\n");
   
   
   
    c_uid = -1;
   
    sscanf(input_ch,"uid=%ld",&uid);
   
   /* Transform input data */
   
    printf("Input
   
   Nuber:%ld.<BR><HR>",uid);
   
    exit(0);
   
    }
   
   
   Доступ к базе данных под управлением Ingres
   Простой вызов постоянного запроса
   Форматирование вывода
   Запрос через Query-String
   Фильтрация
   Примеры скриптов
   
   #!/bin/sh
   
   echo Content-type: text/plain
   
   echo
   
   ingres polyn < query
   
   #The end of script
   
   
   
   #!/bin/sh
   
   echo Content-type: text/plain
   
   echo
   
   helpr polyn
   
   #The end of script
   
   
   
   #!/bin/sh
   
   echo Content-type: text/html
   
   echo
   
   echo '< PRE> '
   
   helpr polyn situat
   
   echo '< /PRE> '
   
   #The end of script
   
   
   
   #!/bin/sh
   
   echo Content-type: text/html
   
   echo
   
   echo '< PRE> '
   
   echo $QUERY_STRING | tr "+" " " | ingres polyn
   
   echo '< /PRE> '
   
   #The end of script
   
   
   
   #!/bin/sh
   
   echo Content-type: text/html
   
   echo
   
   echo '< PRE> '
   
   echo $QUERY_STRING | sed -f symbols | ingres polyn |
    tr "\007" "*" | head 100
   
   echo '< /PRE> '
   
   #The end of script
   
   
   
   
   Организация стека графических ссылок
   Скрипт imagemap
   
   
   <A href="http://polyn.net.kiae.su/cgi-bin/imagemap/
    russia">
   
   <img SRC="http://demin.polyn.kiae.su/dss/russia.gif"
    ISMAP>
   
   </A>
   
   
   
   
   # метка : адрес файла описания картинки
   
   
   russia : /usr/local/etc/httpd/cgi-bin/maps/russia.map
   
   brussia : /usr/local/etc/httpd/cgi-bin/maps/brussia.map
   
   
   ....
   
   
   #описание прямоугольника
   
   
   rect 10 20 100 200
   
   circle 50 50 60 60
   
   poly 10 10 20 20 20 10
   
   
   

Опубликовано: HTTP://WWW.R-T-F-M.INFO, pauk ©® 2000-2011.
All rights reserved.
При перепечатки ссылка на сайт обязательна.
Мнение администрации сайта не всегда совпадает с мнением автора..