我在网页上有一个菜单系统,允许用户从多个选项中进行选择。选择一个选项后,我想通过函数将其作为arg传递。我想评估以查看所选内容,然后执行提供arg的脚本。我是PHP的新手,但很高兴学习。以下是我尝试消化相关解释后的最佳尝试。
public function getData($args=array()) {
if(isset($args["what"])){
exec(
'/home/foo/myscript.((string)$args["what"]');
}
else{
exec(
'/home/foo/myscript()');
}
}
我怀疑我没有在shell脚本和参数之间正确占用空间,但我尝试的看似合理的变化都失败了。我是在正确的轨道还是我应该以另一种方式一起尝试?
答案 0 :(得分:0)
exec('/home/foo/myscript.((string)$args["what"]');
这个问题是当你开始尝试连接PHP时,你仍然在你的字符串中。首先关闭字符串。
exec('/home/foo/myscript ' . (string)$args["what"] );
接下来,您希望在将参数传递给脚本时更加安全,这样他们就不会被误解。查看escapeshellarg()
。 http://php.net/manual/en/function.escapeshellarg.php
exec('/home/foo/myscript ' . escapeshellarg((string)$args["what"]) );
此外,您可能不需要(string)
,因为escapeshellarg()
无论如何都只使用字符串。该参数中的任何内容都将被转换为字符串。
exec('/home/foo/myscript ' . escapeshellarg($args['what']) );