我有一个网页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 有没有办法做到这一点?
非常感谢!
答案 0 :(得分:4)
curl
您需要使用curl
(man page)。
例如,将命令发布到您将使用的页面:
<?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);
?>
<?php
$ch = curl_init('http://ipaddress?command=middle');
curl_exec($ch);
?>
您需要查看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()
发送命令。
如果您需要客户提出请求,您可以例如提供img
或iframe
元素并将目标网址加载到该元素中。
答案 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。