【问题标题】:PHP shell command not executed via AJAX-callPHP shell 命令未通过 AJAX 调用执行
【发布时间】:2011-07-06 08:32:07
【问题描述】:

在我的家庭服务器管理应用程序中,我添加了一个通过应用程序远程唤醒 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`;
?>

但是,我的电脑没有被唤醒。如果我直接浏览到脚本,它确实可以工作......

【问题讨论】:

    标签: php ajax shell wake-on-lan


    【解决方案1】:

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

    您也可以使用$_REQUEST 超全局变量,它包含 PHP 中的 post 和 get 变量。

    【讨论】:

    • 卫生署!这意味着我已经研究了大约 3 个月了,我很傻……它有效,谢谢!当然,所有其他答案也是正确的。
    【解决方案2】:

    你可能需要使用

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

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

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

    这导致“主机”出现在 $_GET 中。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多