| Передача параметров | Previous Home Next |
| Методы GET и POST |
| Существует по крайней мере два метода передачи параметров CGI-программе. |
| <form method=GET action="program.exe"> |
| <form method=POST action="program.exe"> |
| Чтобы определить, каким именно методом CGI-программе переданы параметры, достаточно в вашей программе проверить переменную среды REQUEST_METHOD. |
| |
| Ниже привдена функция, с помощью которой можно получить значение переменной среды окружения: |
| |
| function getvar(varname:string):string; |
| {$IFDEF LINUX} |
| begin |
| result:=getenv(PChar(varname)); |
| end; |
| {$ELSE} |
| 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; |
| {$ENDIF} |
| |
| Автор предпочитает работать не с массивами, а со строками, поэтому результат функции преобразовывается в строку... |
| |
| Теперь посмотрим, как определить значение переменной среды под DOS в .BAT файле: |
| |
| @ECHO OFF |
| ECHO content-type: text/html |
| ECHO. |
| ECHO ^<HTML^>^<HEAD^>^<TITLE^>^</TITLE^>^</HEAD^>^<BODY^> |
| ECHO REQUEST_METHOD=%REQUEST_METHOD% |
| ECHO ^</BODY^>^</HTML^> |
| |
| Обратите внимание, что специальные символы, используемые в DOS (такие, как "<", ">", "&",...), необходимо предварять знаком "^". |
| |
| Таким образом, если мы обратимся к функции в виде GetVar('REQUEST_METHOD'), то получим в виде строки метод, которым были переданы параметры: 'GET' или 'POST'. |
| |
| Согласно Спецификации CGI, параметры могут быть прочитаны: |
| · | Из переменной окружения QUERY_STRING для метода GET |
| · | Из стандартного ввода (STDIN) с помощью процедуры ReadLn для метода POST |
| |
| Метод POST используется в тех случаях, когда необходимо передать большое количество параметров или большой объем данных. При использовании же метода GET для хранения всех передаваемых параметров используется переменная среды окружения, а она, как вы понимаете, не резиновая, так что ее максимального размера в некоторых случаях может не хватить... |
| |
| Метод GET и переменная QUERY_STRING |
| Переменная среды окружения QUERY_STRING содержит список имен и значений параметров, переданных из формы... Но сначала рассмотри код HTML: |
| |
| <form method="GET" action="program.exe"> |
| <input type=text name="toto" value="titi"> |
| <input type=submit value="GO"> |
| </form> |
| |