通过php发送命令

时间:2011-09-01 09:11:37

标签: php url header command

我有一个网页index.php,我希望通过另一个网址发送命令,但不会转到此页面。 这是我的代码:

<?php
$nb = $_GET[‘value’];

if ($nb >= 1000)
    header('Location: http://ipaddress/.../?command=on');

else if $nb >= 500 && $nb < 1000)
    header('Location: http://ipaddress/.../?command=middle');

else 
header('Location: http://ipaddress/.../?command=off');
?>

问题是该页面由于“标题”而尝试更改,我只是想发送命令但是留在我的页面index.php 有没有办法做到这一点?

非常感谢!

8 个答案:

答案 0 :(得分:4)

使用curl

您需要使用curl (man page)

POST示例

例如,将命令发布到您将使用的页面:

<?php
$ch = curl_init('http://ipaddress');

$data = array('command' => 'middle');

curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_exec($ch);
?>

GET示例

<?php
$ch = curl_init('http://ipaddress?command=middle');   
curl_exec($ch);
?>

防止请求的URL内容输出到屏幕

您需要查看CURLOPT_RETURNTRANSFER的{​​{1}}选项。例如:

curl_setopt()

现在<?php $ch = curl_init('http://ipaddress?command=middle'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $return = curl_exec($ch); ?> 包含所请求网址的内容

文档

$return中使用的选项为documented here

答案 1 :(得分:2)

如果可以通过服务器进行呼叫,请使用例如file_get_contents()发送命令。

如果您需要客户提出请求,您可以例如提供imgiframe元素并将目标网址加载到该元素中。

答案 2 :(得分:1)

如果我理解正确,请改用file_get_contents:

<?php
$nb = $_GET[‘value’];

if ($nb >= 1000)
    file_get_contents('http://ipaddress/.../?command=on');

else if $nb >= 500 && $nb < 1000)
    file_get_contents('http://ipaddress/.../?command=middle');

else 
    file_get_contents('http://ipaddress/.../?command=off');
?>

答案 3 :(得分:1)

是的,您可以使用Ajax。 Ajax优于cURL或file_get_contents,因为您将保留在您的页面上,确切地说就在您的位置。

function SendData(strData)
    if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
    } else {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            // The page has been requested and your code has been run
        }
        xmlhttp.open("GET","http://ipaddress/.../?command=" + strData, true);
        xmlhttp.send();
    }
}

用HTML调用它: <a href='#' onClick='SendData("on");'>Send ON</a>

答案 4 :(得分:0)

可以通过从脚本设置cURL会话来实现 - 但是您不想包含该文件并调用函数或其他内容吗?

答案 5 :(得分:0)

是的,你应该看看使用cURL

答案 6 :(得分:0)

用于GET请求的file_get_contents()或用于GET和POST请求的cURL

答案 7 :(得分:0)

烨。

$resp = file_get_contents('http://ggg.com?foo=bar');

查看file_get_contents和fopen的PHP手册,其中包含用于获取http内容的包装器,默认情况下在大多数版本中启用。

您甚至可以使用此方法进行POST,而无需使用其他库,例如cURL。如果您认为此功能对您有用,请查看PHP手册中的stream_get_contents。