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

I: Integer;

ReqVar: string;

VarValue: array [0..200] of Char;

begin

writeln('Content type: text/html');

writeln;

writeln('<HTML><HEAD>');

writeln('<TITLE>CGI Variables</TITLE>');

writeln('</HEAD><BODY>');

writeln('<H1>CGI Variables</H1>');

writeln('<HR><PRE>');

for I := Low (VarList) to High (VarList) do

begin

ReqVar := VarList[I];

If (GetEnvironmentVariable (pChar(ReqVar),

VarValue, 200) > 0) then else VarValue := '';

writeln (VarList[I] + ' = ' + VarValue);

end;

writeln('</PRE></BODY></HTML>');

end.

Результат работы CGI-программы, которая выводит список некоторых переменных окружения и их значения

2.3 Разработайте cgi-программу гостевой книги.

Листинг HTML-формы гостевой книги:

<html><head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<title>Example-[Гостевая книга]</title>

</head>

<body>

Гостевая книга:<Br>[Оставьте свои пожелания, мнения, отзывы]

<hr>

<form method="Post"

action="HTTP://localhost/CGI-BIN/Guest_Book/Guest_book.exe">

<p>_Имя: <input type="Text" name="Name" size="40">

<p>Email: <input type="Text" name="Email" size="40">

<p>Напишите сообщение:<br>

<TextArea name="text" cols=60 rows=8></TextArea>

<hr> <br> <input type="submit" value="Сохранить">

<input type="reset" value="Очистить" name="Rst">

</form><hr>

</body></html>

Листинг программы для обработки данных, полученных из формы гостевой книги:

program chkpaswd;

{$APPTYPE CONSOLE}

uses MainUn in 'MainUn.pas';

begin

Main;

end.

unit MainUn;

interface

uses SysUtils, Windows, Classes;

procedure Main;

implementation

type Rec=record

Name:String[40];

Email:String[40];

Txt:String[254];

end;

TBase= File of Rec; bse=Array[1..100] of Rec;

var Size : cardinal;

InParams,APasswd : string;

GBase: TBase;

Bs:Bse;

Nm:Integer;

const

UserPassword : String = 'MyPass';

GBook: String = 'GBook.bs';

// Функция перевода шестнадцетиричного символа в число

function HexToInt(CH : char): integer;

begin Result:=0;

case CH of

'0'..'9': Result:=Ord(CH)-Ord('0');

'A'..'F': Result:=Ord(CH)-Ord('A')+10;

'a'..'f': Result:=Ord(CH)-Ord('a')+10;

end;

end;

// Преобразует символы, записанные в виде URLencoded

function Decode(Value: string): string;

Var I, l: integer;

begin Result:=''; L:=0;

for i := 1 to Length(Value) do

begin

if(Value[i] <> '%') and (Value[i] <> '+') and (L<1) then

begin Result := Result + Value[i]; end

else

begin

if(Value[i] = '+') then Result := Result + ' ' else if(Value[i] = '%') then

begin

L := 2;

if(i < Length(Value) - 1) then

begin

Result := Result + Chr(HexToInt(Value[i+1]) * 16 + HexToInt(Value[i+2]));

end;

end

else

Dec(L);

end;

end;

end;

//Функция возвращает значение атрибута заданного

//в качестве параметра функции из строки данных

//считанной из устройства стандартного ввода.

function getvar(varname:string):string;

Var buffer:array[0..1024] of char;

size:integer;

begin

size:=GetEnvironmentVariable(PChar(varname),buffer,sizeof(buffer));

if size=0 then getvar:='' else getvar:=String(buffer);

end;

//Функция возвращает значение параметра по его имени:

function ParamByName(Name: string): string;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]