unit cgiun; interface uses SysUtils, Windows; procedure Main; implementation var InParams: string; // Читаем переданные параметры из переменной окружения procedure InitParams; var SS: string; begin SetLength(SS,10000); GetEnvironmentVariable('QUERY_STRING',@SS[1],2000); InParams:=PChar(@SS[1]); end; // Функция переводит шестнадчитиричный символ в число 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; // Преобразует символы, записанные в виде %2B к правильному виду 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(I0 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 Main; var UserId, Password: string; begin InitParams; UserId:=ParamByName('USERID'); Password:=ParamByName('PASSWORD'); WriteLn('Content-Type: text/html'); WriteLn; WriteLn(''); WriteLn(''); if(UserId='prosun') and (Password='goodday') then begin WriteLn('СGI скрипт: доступ разрешен'); WriteLn(''); WriteLn(''); WriteLn; WriteLn('

доступ разрешен

'); end else begin WriteLn('СGI скрипт: ошибка авторизации'); WriteLn(''); WriteLn(''); WriteLn; WriteLn('

ошибка авторизации

'); end; WriteLn(' UserID: '+UserId+''); WriteLn(' Password: '+Password+''); WriteLn(''); WriteLn(''); end; end.