C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  Update World C++: Сборник GPL QT исходников
  Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Дебетовая карта Home Credit [CPS] RU

 CGI-программы / Сетевые технологии / Сеть

CGI-программы

Стандатр 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-программы. Напримет так:
http://имя_сервера/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=http://localhost/index.html
Значение параметра HTTP_USER_AGENT=Mozila/4.0
и т. д.

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




Дебетовая карта Home Credit [CPS] RU