我有一些HTML / PHP的基本知识。我面临的情况令人沮丧。我想要完成的是在网页上创建一个简单的搜索框,当用户输入输入并单击提交然后执行我的shell脚本然后在php页面上显示。当我单击“提交”以确保PHP exec shell命令正常工作时,我已成功运行其他命令。 我将在网页上看到输出。不是我的剧本。我的脚本使用参数传递并通过命令行工作。以下是我的脚本,HTML和PHP页面的详细信息。另外,我正在使用FreeBSD 10盒子。
我的剧本
命令行 - $ csearch“参数”
#!/bin/sh
grep -ir -B 1 -A 4 "$*" /usr/local/var/rancid/CiscoDevices/configs
我的HTML页面
<html>
<body>
<form method="POST" action="csearch.php">
<input type="text" name="searchText">
<input type="submit" value="Search">
</form>
</body>
</html>
我的PHP页面
<?php
$searchText=$_POST['$searchText'];
?>
<html>
<?php
$output = shell_exec('/usr/local/bin/csearch $searchText');
echo "<pre>$output</pre>";
?>
</html>
非常感谢任何帮助。
答案 0 :(得分:0)
shell_exec('/usr/local/bin/csearch $searchText');
这不是你所期望的那样:
<?php
$searchText = 'foobar';
$cmd = '/usr/local/bin/csearch $searchText';
echo $cmd;
?>
输出:
/ usr / local / bin / csearch $ searchText
将字符串更改为使用双引号,$ searchText实际上就是您想要的字符:
$output = shell_exec("/usr/local/bin/csearch $searchText");
More info on the use of quotes in PHP.
正如@ uri2x在评论中暗示:
$searchText=$_POST['$searchText'];
因类似原因应更改为$searchText=$_POST['searchText'];
。