Чтение онлайн

ЖАНРЫ

Интернет решения от доктора Боба

Swart Bob

Шрифт:

Dummy: Word;

function GetDosEnvCount: Word;

public

{ Public interface declarations }

function GetDosEnvStr(const Name: String): String;

{ This function is a modified version of the GetEnvVar function thatappears in the WinDos unit that comes with Delphi. This function's interface uses Pascal strings instead of null-terminated strings.

}

published

{ Published design declarations }

property DosEnvCount: Word read GetDosEnvCount write Dummy;

property DosEnvList: TStringList read FDosEnvList write DoNothing;

end;

 implementation

constructor TBDosEnvironment.Create(AOwner: TComponent);

var

P: PChar;

begin

inherited Create(AOwner);

FDosEnvList := TStringList.Create;

{$IFDEF WIN32}

P := GetEnvironmentStrings;

{$ELSE}

P := GetDosEnvironment;

{$ENDIF}

while P^ <> #0 do

begin

FDosEnvList.Add(StrPas(P));

Inc(P, StrLen(P)+1) { Fast Jump to Next Var }

end;

end {Create};

destructor TBDosEnvironment.Destroy;

begin

FDosEnvList.Free;

FDosEnvList := nil;

inherited Destroy

end {Destroy};

procedure TBDosEnvironment.DoNothing(const Value: StringList);

begin

end {DoNothing};

function TBDosEnvironment.GetDosEnvCount: Word;

begin

if Assigned(FDosEnvList) then

Result := FDosEnvList.Count

else

Result := 0;

end {GetDosEnvCount};

function TBDosEnvironment.GetDosEnvStr(const Name: String): String;

var

i: Integer;

Tmp: String;

begin

i := 0;

Result := '';

if Assigned(FDosEnvList) then while i < FDosEnvList.Count do

begin

Tmp := FDosEnvList[i];

Inc(i);

if Pos(Name,Tmp) = 1 then

begin

Delete(Tmp,1,Length(Name));

if Tmp[1] = '=' then

begin

Delete(Tmp,1,1);

Result := Tmp;

i := FDosEnvList.Count { end while-loop }

end

end

end

end {GetDosEnvStr};

 end.

Здесь

список переменных среды (предоставленный Deepak Shenoy), которые доступны для CGI программ. Даже ISAPI программы могут использовать эти переменные:

Environment Variable Purpose/Meaning/Value
GATEWAY_INTERFACE  Версия CGI для которой скомпилирован web сервер
SERVER_NAME IP адрес сервера или имя.
SERVER_PORT Порт на сервере, которые принимает HTTP запросы.
SERVER_PROTOCOL Имя и версия протокола, используемая для обработки запросов.
SERVER_SOFTWARE Имя (и обычно версия) программного обеспечения сервера.
AUTH_TYPE Схема проверки прав используемая сервером (NULL, BASIC)
CONTENT_FILE Файл используемый для передачи данных CGI программе (только Windows HTTPd/WinCGI).
CONTENT_LENGTH Количество байтов переданное на стандартный вход (STDIN) как содержимое POST запроса.
CONTENT_TYPE Тип данных переданных на сервер.
OUTPUT_FILE Имя файла для результата (только Windows HTTPd/WinCGI).
PATH_INFO Дополнительный, относительный путь переданный на сервер после имени скрипта, но до данных запроса.
PATH_TRANSLATED Та же самая информация, но преобразованная из относительного пути в абсолютный.
QUERY_STRING Данные переданные как часть URL, все после символа ? в URL.
REMOTE_ADDR Адрес IP или имя сервера конечного пользователя.
REMOTE_USER Имя пользователя, если используется схема проверки прав.
REQUEST_LINE Полный HTTP запрос представляемый сервером (зависит от сервера).
REQUEST_METHOD Указывает метод передачи данных, как часть URL (GET) или через стандартный ввод STDIN (POST).
SCRIPT_NAME Имя запущенного скрипта.

Немного еще дополнительной, но важной информации. Немного об переменных среды, которые особо важны для обработки запроса, и небольшое описание по обработке стандартных CGI приложений:

REQUEST_METHOD – указывает, как посланы данные, как POST или как GET метод.

QUERY_STRING – если используется GET

CONTENT_LENGTH – если мы используем POST, то мы должны прочитать "CONTENT_LENGTH" символов со стандартного ввода (которые оканчиваются "Query", подобно QUERY_STRING при использовании метода GET).

Поделиться с друзьями: