Главное назначение Common Gateway Interface - обеспечение единообразного потока данных между сервером и прикладной программой, которая запускается из-под сервера
CGI-скрипт - программа написанная в соответствии со спецификацией Common Gateway Interface. CGI-скрипты могут быть написаны на любом языке программирования (C, C++, PASCAL, FORTRAN и т. п.) или командном языке (shell, cshell, командный язык MS-DOS, Perl и т. п.). Скрипт может быть написан даже на языке редактора EMAC в системах Unix
Шлюз - это CGI-скрипт, который используется для обмена данными с другими информационными ресурсами Internet или приложениями-демонами. Обычная CGI- программа запускается сервером HTTP для выполнения некоторой работы, возвращает результаты серверу и завершает свое выполнение
К общим переменным окружения относятся:
К запрос-ориентированным относятся:
Идентификация пользователя и его машины:
Стандартный ввод CGI-скрипта
Стандартный вывод CGI-скрипта
#!/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);
}
#!/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