我有一个非常基本的网站,我纯粹是为了提高我的网络开发技能。我刚刚开始使用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功能并不是特别安全,但是这个网站在不久的将来不会公开,所以我会处理这个问题。当我需要的时候。
非常感谢任何帮助。
答案 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");
感谢。