- •Лабораторная работа № 9 Тема: Применение cgi-скриптов
- •1 Сведения из теории
- •Переменные окружения
- •Механизмы приема данных
- •Var parmstring:String;I:Integer;
- •Interface
- •Implementation
- •InParams,aPasswd : string;
- •Var I, l: integer;
- •Var ss, st : string; k : integer;
- •Пример использования метода get
- •Пример использования метода post
- •I:integer;
- •If Not Eof(Input) then begin
- •2.5 Вывод изображений
- •Var s:TfileStream;
- •I: Integer;
- •VarValue: array [0..200] of Char;
- •If (GetEnvironmentVariable (pChar(ReqVar),
- •2.3 Разработайте cgi-программу гостевой книги.
- •Var I, l: integer;
- •Var buffer:array[0..1024] of char;
- •Var ss, st : string;
- •Var k:Integer;
- •Var n:Integer;
- •Var parmstring:String;I:Integer;
- •3 Содержание отчета
- •Контрольные вопросы
- •Литература
Var ss, st : string;
K : integer;
begin Result := '';
SS := InParams;
while Length(SS) <> 0 do
begin K := Pos('&',SS);
if (K <> 0) then
begin
ST := Copy(SS,1,K-1); SS := Copy(SS,K+1,10000);
end
else
begin
ST :=SS; SS:='';
end;
K := Pos('=',ST);
if(K <> 0) then
begin
if(Name = Copy(ST,1,K-1)) then
begin
Result := Decode(Copy(ST,K+1,6000));
end;
end;
end;
end;
//Открытие базы с записями книги
Procedure OpenBase(var base:bse;var i:integer);
Var k:Integer;
Begin Assign(GBase,GBook);
{$I-}
Reset(GBase);
if IOResult<>0 then begin Rewrite(GBase); {Readln;} end;
{$I+}
i:=Filesize(GBase);seek(GBase,0);
for k:=1 to i do Read(GBase,base[k]);
close(GBase);
end;
//Сохранение базы с записями книги
Procedure SaveBase(base:bse;i1:integer);
Var n:Integer;
Begin
Assign(GBase,GBook); Rewrite(GBase);
for n:=1 to i1 do Write(GBase,base[n]);
close(GBase);
end;
procedure Main;
Var parmstring:String;I:Integer;
begin nm:=0;
if getvar('REQUEST_METHOD')='POST' then begin
parmstring:=getvar('CONTENT_LENGTH');
if parmstring<>'' then begin
size:=strtoint(parmstring);
setlength(parmstring,size);
for i:=1 to size do read(parmstring[i]);
end;
end else
parmstring:=getvar('QUERY_STRING');
InParams:=parmstring;
OpenBase(Bs,Nm);
IF ParamByName('text')<>'' THEN BEGIN
Inc(Nm);
Bs[Nm].Email:=ParamByName('Email');
Bs[Nm].Name:=ParamByName('Name');
Bs[Nm].Txt:=ParamByName('text');END;
SaveBase(bs,nm);
WriteLn('<HTML><HEAD>');
WriteLn('<TITLE>Гостевая книга:</TITLE>');
WriteLn('<META http-equiv="Content-Type" content="text/html;charset=windows-1251">');
WriteLn('<hr size=10 color=Green>');
for i:=1 to nm do
begin
Write('<Pre>[Имя:] '+Bs[i].Name+' ');
Write('[E-mail:] <A href="mailto:'+Bs[i].Email+'">'+Bs[i].Email+'</a>');
Write('<hr>'+Bs[i].txt);
Write('</Pre><hr size=10 color=Green>');
end;
WriteLn('</BODY></HTML>');
end;
end.
Проверьте отображение результата:
Форма ввода гостевой книги
Результат работы гостевой книги
3 Содержание отчета
1. Разработанные приложения CGI-скриптов.
Контрольные вопросы
Что такое CGI и принцип работы?
Что такое шлюз?
Для чего используются переменные окружения. Рассказать о них
SERVER_SOFTWARE
SERVER_NAME
GATEWAY_INTERFACE
SERVER_PROTOCOL
SERVER_PORT
REQUEST_METHOD
PATH_INFO
PATH_TRANSLATED
SCRIPT_NAME
QUERY_STRING
REMOTE_HOST
REMOTE_ADDR
AUTH_TYPE
REMOTE_USER
REMOTE_IDENT
CONTENT_TYPE
CONTENT_LENGTH
HTTP_ACCEPT
HTTP_USER_AGENT
Дать описание методам GET, POST, PUT, HEAD
Что такое CGI-bin?
В каком формате передаются данные из форм CGI-программе?
Когда можно увидеть данные, передаваемые CGI-программе в командной строке?
Литература
Основы Web-технологий / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. – М.: ИНТУИТ.РУ ”Интернет-Университет Информационных Технологий”, 2003. – 512 с.
Пауэлл Т.А. Полное руководство по HTML / Пер. с англ. А.В. Качанов. – Мн.: ООО “Попурри”, 2001. – 912 с.
Применение каскадных таблиц стилей (CSS) / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru
Введение в HTML / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru
Введение в CGI / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru
Введение в JavaScript / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru
Б. Лоренс Novell Netware 4.1 в подлиннике. — СПб.: BHV-Санкт-Петербург, 1997. - 720 с.
