PHP shell命令不通过AJAX调用执行

时间:2011-07-06 08:32:08

标签: php ajax shell wake-on-lan

在我的家庭服务器管理应用程序中,我添加了一个通过应用程序远程唤醒PC的功能。 执行此操作的PHP脚本运行良好,但我希望能够通过AJAX调用来完成此操作。

调用如下:

用户点击PHP生成的链接:

<a href=\"javascript:wake('$hostname')\">Wake</a>

函数(jQuery)是:

function wake(hostname) {
    $(document).ready(function()
    {
       alert('function works');
       $.post('ajax/wake.php',{host: hostname});
       alert('Command executed');
    });
}

显示两个警报,这意味着执行AJAX调用。 php脚本看起来像这样:

<?php
include_once("../classes/BLClient.php");
$blClient = new BLClient(true);
$hostname = $_GET["host"];

$client = $blClient->getClientByHostname($hostname);
$mac = $client->getMac();

echo `sudo etherwake -i eth1 $mac`;
?>

然而,我的电脑没有被唤醒。如果我直接浏览脚本,它确实有用......

3 个答案:

答案 0 :(得分:1)

您正在触发$.post ajax请求,但您正在PHP脚本中读取$_GET参数。请改为$.get ajax请求,否则数据将位于$_POST而不是$_GET

或者你可以使用PHP中包含post和get变量的$_REQUEST超全局。

答案 1 :(得分:0)

您可能需要使用

$_POST["host"]$_REQUEST["host"] 在你的php脚本中,正如你在做一个Jquery帖子。

在浏览器中,您可能会传递主机:

 http://www.mysite.com/ajax/wake.php?host=xxxxxxxx

导致$ _GET中出现“host”。

答案 2 :(得分:0)

你正在打电话'$.post',所以你必须使用“$_POST["host"]