Язык скриптования сайтов Parser 3

       

Filecgiexec


cgi и exec. Исполнение программы


^file::cgi[имя файла]

^file::cgi[имя файла;env_hash]

^file::cgi[имя файла;env_hash;аргументы]

^file::exec[имя файла]

^file::exec[имя файла;env_hash]



^file::exec[имя файла;env_hash;аргументы]

Конструктор cgi создает объект класса file, содержащий результат исполнения программы в соответствии со стандартом CGI.

Внимание: перез запуском программы Parser изменяет текущий каталог на каталог с программой.

Заголовки, которые выдаст CGI-скрипт, конструктор поместит в поля класса file в ВЕРХНЕМ регистре. Например, если некий скрипт script.pl, среди прочего, выдает в заголовке строку field:value, то после работы конструктора

$f[^file::cgi[script.pl]],

обратившись к $f.FIELD, получим значение value.

Конструктор exec аналогичен file::cgi, но не отделяет HTTP-заголовки от текста, возвращаемого скриптом.

Имя файла - имя файла с путем.

Объект, созданный этими конструкторами, имеет дополнительные поля:

status - информация о статусе завершении программы (обычно 0 - программа завершилась успешно, не 0 - с ошибкой)   

stderr - результат считывания стандартного потока ошибок   

Пример:

$cgi_file[^file::cgi[new.cgi]]

$cgi_file.text


Выведет на экран результаты работы скрипта new.cgi.

Необязательные параметры конструкторов ^file::cgi и ^file::exec:

env_hash - хеш, в котором могут задаваться

·дополнительные переменные окружения, которые впоследствии будут доступны внутри исполняемого скрипта,  

·а также переменная stdin, содержащая текст, передаваемый исполняемому скрипту в стандартном потоке ввода.  

Внимание: можно задавать только стандартные CGI переменные окружения и переменные, имена которых начинаются с CGI_ или HTTP_ (допустимы латинские буквы в ВЕРХНЕМ регистре, цифры, подчеркивание, минус).

Внимание: при обработке HTTP POST запроса, при помощи конструкции $.stdin[$request:body] вы можете передать в стандартный поток ввода скрипта полученные вами POST-данные. [3.0.8, раньше они передавались по-умолчанию]





Пример внешнего CGI-скрипта

$file[^file::exec[script.cgi;$.QUERY_STRING[param=^taint[значение]]]]

Пример внешнего скрипта

^file::exec[script.pl;$.CGI_INFORMATION[этого мне не хватало]]



Внутри скрипта script.pl можно воспользоваться переданной информацией:

print "Дополнительная информация: $ENV{CGI_INFORMATION}\n";



Пример передачи нескольких аргументов

Кроме того, вызываемой программе можно передать ряд аргументов, перечислив их через точку с запятой после хеша переменных окружения:

^file::exec[script.pl;;длина;ширина]



Внимание: настоятельно рекомендуется хранить запускаемые скрипты вне веб-пространства, поскольку запуск скрипта с произвольными параметрами может привести к неожиданным результатам.

Copyright © 1997?2004 Art. Lebedev Studio | http://www.artlebedev.ru Дата обновления: 11.05.2004

Содержание раздела