Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПЗ_4_Применение CGI-скриптов.doc
Скачиваний:
11
Добавлен:
20.08.2019
Размер:
7 Мб
Скачать
☆

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-скриптов.

  1. Контрольные вопросы

  1. Что такое CGI и принцип работы?

  2. Что такое шлюз?

  3. Для чего используются переменные окружения. Рассказать о них

    1. SERVER_SOFTWARE

    2. SERVER_NAME

    3. GATEWAY_INTERFACE

    4. SERVER_PROTOCOL

    5. SERVER_PORT

    6. REQUEST_METHOD

    7. PATH_INFO

    8. PATH_TRANSLATED

    9. SCRIPT_NAME

    10. QUERY_STRING

    11. REMOTE_HOST

    12. REMOTE_ADDR

    13. AUTH_TYPE

    14. REMOTE_USER

    15. REMOTE_IDENT

    16. CONTENT_TYPE

    17. CONTENT_LENGTH

    18. HTTP_ACCEPT

    19. HTTP_USER_AGENT

  4. Дать описание методам GET, POST, PUT, HEAD

  5. Что такое CGI-bin?

  6. В каком формате передаются данные из форм CGI-программе?

  7. Когда можно увидеть данные, передаваемые CGI-программе в командной строке?

Литература

  1. Основы Web-технологий / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. – М.: ИНТУИТ.РУ ”Интернет-Университет Информационных Технологий”, 2003. – 512 с.

  2. Пауэлл Т.А. Полное руководство по HTML / Пер. с англ. А.В. Качанов. – Мн.: ООО “Попурри”, 2001. – 912 с.

  3. Применение каскадных таблиц стилей (CSS) / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru

  4. Введение в HTML / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru

  5. Введение в CGI / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru

  6. Введение в JavaScript / П.Б. Храмцов, С.А. Брик, А.М. Русак, А.И. Сурин /Под. редакцией П.Б. Храмцова. http://www.intuit.ru

  7. Б. Лоренс Novell Netware 4.1 в подлиннике. — СПб.: BHV-Санкт-Петербург, 1997. - 720 с.