PHP在HTML论坛上运行带有多个参数的shell命令

时间:2016-03-06 22:03:15

标签: php shell

我是PHP的新手,但我想看看这样的事情是否可行。我必须运行一个带有多个参数的shell命令,您可以在这样的HTML论坛上进行更改。

<html>
<body>
<form method="POST" action="">
    <input type="text" name="cmd1">
    <input type="text" name="cmd2">
    <input type="text" name="cmd3">
    <input type="text" name="cmd4">
    <input type="submit" value="Submit">
</form>
</body>
</html>

它必须运行shell命令,例如 -

shell_exec('example $cmd1, $cmd2, $cmd3, $cmd4')

我不太了解PHP,但是这样可能吗?如果是的话,我怎么能这样做?谢谢!

2 个答案:

答案 0 :(得分:1)

是的,您可以执行shell命令,除非您的应用程序以安全模式运行:

http://php.net/manual/en/function.shell-exec.php

正如您所看到的,shell命令作为字符串是唯一可以发送到函数的参数。但是,命令本身可能有许多参数,具体取决于您使用的内容。

该命令只是一个字符串,因此您可以在PHP脚本中以任何方式构建它。只需将表单发布到PHP文件中,然后执行任何需要完成的操作。

E.g:

$cmd = 'myCommand ' . $_POST['cmd1'] . ' ' . $_POST['cmd2'];
shell_exec($cmd);

如果您的每个输入都包含一个命令,那么您必须自己完成每个命令。

BIG WARNING 除非您严格验证输入,否则这可能非常不安全。

答案 1 :(得分:1)

您错过了$_POST变量与变量$cmd1$cmd2$cmd3$cmd4

之间的联系

可以这样指定:

$cmd1 = $_POST['cmd1'];
$cmd2 = $_POST['cmd2'];
$cmd3 = $_POST['cmd3'];
$cmd4 = $_POST['cmd4'];

然后你还需要知道PHP中的事情concatenated,这是.使用shell_exec示例:

shell_exec('example $cmd1, $cmd2, $cmd3, $cmd4');

应该这样写:

shell_exec('example '.$cmd1.', '.$cmd2.', '.$cmd3.', '.$cmd4');

警告:如果您在执行外壳脚本之前没有正确检查变量,那么从提交的内容中执行外壳命令可能会非常不安全!