Работая в PERL, я пытаюсь запустить командную строку Unix, используя переменные, проанализированные из HTML-формы. Ниже приведена HTML-форма:
<?PHP
if ($_REQUEST['action'] == "submit") {
$var1 = $_REQUEST['var1'];
$var2 = $_REQUEST['var2'];
** working toward executing script "/usr/lib/cgi-bin/test.pl" with the above variables **
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Test HTML Submit to CGI</title>
</head>
<body>
<form name-"Submit" id="Submit" method="POST">
<input type="hidden" name="action" value="submit" />
Input Variable 1<br /><br />
<input type="text" name="var1"></input><br /><br />
Input Variable 2<br /><br />
<input type="text" name="var2"></input><br /><br />
<input type="submit" value="Execute script" />
</form>
</body>
</html>
и я ищу правильный синтаксис, чтобы использовать эти переменные для отправки командной строки Unix через CGI-скрипт. У меня есть test.pl со следующим:
use CGI;
$parse = new CGI;
$var1 = $parse->param('var1');
$var2 = $parse->param('var2');
if ($var1) {
if ($var2) {
echo "$var1" | UnixCommand --trigger +$var2
}
}
exit;
Я хочу выполнить скрипт из отправленной формы только после некоторой проверки, которую я напишу в верхнюю часть PHP-файла. Команда unix, которую я пытаюсь выполнить в CGI, требует, чтобы и кавычки вокруг var1, и знак + before $ var2 были литеральными, что, я полагаю, потребует какого-то добавления в CGI или экранирования для правильной передачи текста. Есть ли какие-нибудь escape-переменные, которые мне нужно использовать, чтобы строка правильно выполнялась в командной строке?
Буду признателен за любую помощь, которую вы можете оказать,
Серебряный тигр