TheBestHost.ru - «гзиЁҐ е®бвЁ­Ј-Їа®ў ©¤Ґал   EarnVisits - а бЄагвЄ  б ©в®ў  
  Главная Новости Статьи Провайдеры Форум Контакты Ссылки  
Файловая почта - доставка файлов из интернета почтовой бандеролью
 

CGI

Установка Apache, PHP, XML, MySQL под Windows

Введение в PHP

Начала PHP

Оптимизация Apache, PHP, PostgreSQL

Наиболее популярные директивы .htaccess

Преобразование http-ссылок с помощью Apache

Права доступа

Краткое руководство SSI

SSI в примерах

Как поставить скрипты на сайт

О званых гостях

Настройка системы денежных расчетов

Что такое PHP-Nuke?

Установка PHP-Nuke

CGI интерфейс

Песнь о CGI-скриптах

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

Вопросы по скриптам CGI

Спецификация Perl

Жемчужина PERL: мощь C++ и простота Basic

Internet и базы данных

Оптимизация производительности баз данных для Web

Технологии баз данных для World-Wide Web: обзор

 
  Общее Начинающему HTML Провайдеры Раскрутка Разное Безопасность CGI Глоссарий  

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

Главное назначение 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 Number:%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.citforum.ru/