在PERL中工作,我想运行unix命令行使用从html表单解析的变量。以下是HTML表单:HTML变量CGI脚本(uix命令执行)
<?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>
,我期待为使用这些变量通过CGI脚本提交UNIX命令行正确的语法。我有以下内容的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;
我想经过一番验证Iw的病写入到PHP文件的顶部,从提交的表单执行脚本。我试图在CGI中执行的unix命令需要var1附近的引号和$ var2之前的+为正文,我认为这需要在CGI中附加某种附件或转义以使文本正确流动。我需要使用某种逃生变量来让字符串在命令行上正确执行吗?
您可以提供任何帮助,将不胜感激,
银虎
在第二个音符上,我最初试图在php中使用exec()函数来做到这一点,但无法使其工作。我很想保持这个在PHP中。之所以我让PHP调用脚本,是因为我可以在将变量提交给unix命令行之前验证并“清除”这些变量。 – Silvertiger 2011-04-03 22:16:23
我删除了我的第一个评论,它是scatterbrain。我使用“echo”的原因是因为unix命令完全是这样 - echo“这是我的文本”|命令 - 选项+123456 – Silvertiger 2011-04-03 22:27:41
-1:缺少污点检查;本土壳报价是错误的;不使用列表形式为popen。请阅读perlsec。 – daxim 2011-04-04 08:31:33