Большой архив статей, книг, документации по программированию, вебдизайну, компьютерной графике, сетям, операционным системам и многому другому
 
<Добавить в Избранное>    <Сделать стартовой>    <Реклама на сайте>    <Контакты>
  Главная Документация Программы Обои   Экспорт RSS E-Books
 
 

   Интернет технологии -> CGI -> CGI - средство расширения возможностей WWW


Главное назначение Common Gateway Interface - обеспечение единообразного потока данных между сервером и прикладной программой, которая запускается из-под сервера

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=index.html"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

 

 
Интересное в сети
 
10 новых программ
CodeLobster PHP Edition 3.7.2
WinToFlash 0.7.0008
Free Video to Flash Converter 4.7.24
Total Commander v7.55
aTunes 2.0.1
Process Explorer v12.04
Backup42 v3.0
Predator 2.0.1
FastStone Image Viewer 4.1
Process Lasso 3.70.4
FastStone Image Viewer 4.0
Xion Audio Player 1.0.125
Notepad GNU v.2.2.8.7.7
K-Lite Codec Pack 5.3.0 Full


Наши сервисы
Рассылка новостей. Подпишитесь на рассылку сейчас и вы всегда будете в курсе последних событий в мире информационных технологий.
Новостные информеры. Поставьте наши информеры к себе и у вас на сайте появится дополнительный постоянно обновляемый раздел.
Добавление статей. Если вы являетесь автором статьи или обзора на тему ИТ присылайте материал нам, мы с удовольствием опубликуем его у себя на сайте.
Реклама на сайте. Размещая рекламу у нас, вы получите новых посетителей, которые могут стать вашими клиентами.
 
Это интересно
 

Copyright © CompDoc.Ru
При цитировании и перепечатке ссылка на www.compdoc.ru обязательна. Карта сайта.
 
Rambler's Top100