CGI-программы в visual c++

Стандатр CGI(Common Gateway Interface, т. е. общий шлюзовый интерфейс) явился первой ласточкой в развитии программирования на стороне сервера. CGI-программа называется ещё скриптом и может в принцепе быть написаной на любом языке программирования. Самый популярный язык для написания CGI-скриптов - Perl. Однако, как мы сейчас увидим, писать CGI-программы на С - весьма простое занятие.

Смысл работы CGI-программы в следующем:

  • CGI-программа получает данные через окружение;
  • стандартный вывод для CGI-программы означает формирование новой Web-стрвницы и передача её клиенту.

Итак, начнем с разбора окружения. Вспомним, что стандартный заголовок главной функции С-программы имеет вид:

int main(int argc, char* avgv[], char* envp[])

Параметр envp представляет собой масив строк, закнчивающийся строкой NULL. Это и есть окружение. Таким образом, мы легко можем посмотреть весь масив в поисках нужных данных.

Создадим проект простой консольной программы:

#include "stdafx.h"
#include "cgi1.h"
#include <stdlib.h>

int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
{
printf("Content-Type: text/html\n\n");
printf("<HTML>\n");
printf("<HEAD> <TITLE>Пример CGI-программы </TITLE></HEAD>\n");
printf("<BODY>"\n);
printf("Пример CGI-программы на С\n");
int i=0;
while(envp[i])
{
printf("<p>значение параметра %s </p>",envp[i]);
i++
}
printf("</BODY>\n");
printf("</HTML>\n);
return 0;
}

Ниже представлен результат работы программы, отображаемый броузером. Для вызова CGI достаточно на странице указать форму с сылкой на CGI-программу.
Например, вот так:

<form action="cgi1.exe" method="get" ID="Form1">
<input name="last" ID="Text2">
<input type="submit" ID="Submit1" NAME="Submit1">
<input type="reset" ID="Reset1" NAME="Reset1">
</form>

По нажатии кнопки Submit будет выдана страница с представленой ниже информацией. В действительности, однако, можно поступить ещё проще: набрать в строке броузера команду, где вместо имени страници указать имя CGI-программы. Напримет так:
https://имя_сервера/cgi1.exe

Результат работы такстовой CGI-программы

Пример CGI-программы на С
Значение параметра ALLUSERSPROFILE=E:\Documents and settings\All Users
Значение параметра CommonProgramFiles=E:\ProgramFiles\Common Files
Значение параметра ComSpac=E:\WINNT\system32\cmd.exe
Значение параметра CONTENT_LENGTH=0
Значение параметра GATEWAY_INTERFACE=CGI/1.1
Значение параметра HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.mspowerpoint,application/vnd.msexcel,application/msword,*/*
Значение параметра HTTP_ACCEPT_LANGUAGE=ru
Значение параметра HTTP_CONNECTION=Keep-Alive
Значение параметра HTTP_HOST=localhost
Значение параметра HTTP_REFERER=https://localhost/index.html
Значение параметра HTTP_USER_AGENT=Mozila/4.0
и т. д.

Самой важной для нас строкой окружения является QUERY_STRING. Здесь содержатся параметры, передаваемые в CGI-программу. Конечно здесь придётся самому писать процедуру разбора командной строки, но это совсем не сложно. Как видим, формат строки представляет собой следующую строку:
имя=значение&имя1=значение&...

 
« Предыдущая статья   Следующая статья »