使用exec时PHP变量作为参数

时间:2017-10-04 04:44:19

标签: php

我有一个非常基本的网站,我纯粹是为了提高我的网络开发技能。我刚刚开始使用PHP来处理用户填写的表单输入。该脚本应该从表单中获取数据,然后使用Pushbullet API将输入的数据发送到我的手机。我正在使用exec函数来运行我放在名为pushmsg的/ usr / bin目录中的bash脚本。这个脚本有三个参数,它们是表单中的三个信息。问题是,放在exec函数中时,这三个变量似乎不起作用。该消息将发送到我的手机,但只有默认情况下使用pushmsg命令发送的标头没有输入数据。

以下是代码:

    <html>
    <body>
    <link rel="stylesheet" type="text/css" href="style.css">

    <?php
    $name = $_POST["name"];
    $phone = $_POST["phone"];
    $core = $_POST["core"];
    exec('pushmsg echo $name echo $phone echo $core');
    ?>
    <h1>request submited successfully</h1>
    <p>thanks for sending yout request, <?php echo $_POST["name"]; ?>.<br>
    a text will be sent to <?php echo $_POST["phone"]; ?> once your details have been confirmed.
    </p>
    <div class="center">
    <button class="button" action="/index.html">home page</button>
    </div>
    </body>
    </html>

另外,我知道在用户输入中使用exec功能并不是特别安全,但是这个网站在不久的将来不会公开,所以我会处理这个问题。当我需要的时候。

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

我建议将命令写入PHP变量,然后将其用作命令本身:

WebSocket

您可以在$command = "pushmsg echo $name echo $phone echo $core"; $output = exec($command); 变量中捕获exec输出的最后一行。或者使用$output来捕获命令的完整输出。

shell_exec

答案 1 :(得分:1)

您需要将其更改为

$command = "pushmsg $name $phone $core";
$output = exec($command);

答案 2 :(得分:0)

正如@shashi和@mstruebing指出的那样,我只需要用双打替换单引号。这使它工作正常。我也删除了回声,因为它们本来不应该在那里。如果有人有兴趣,请更换:

    old: exec('pushmsg echo $name echo $phone echo $core');
    new:  exec("pushmsg echo $name $phone $core");

感谢。