开发者

send command via php

开发者 https://www.devze.com 2023-04-02 05:29 出处:网络
I have a webpage index.php from where I would like to send a command through another url but without going to this page.

I have a webpage index.php from where I would like to send a command through another url but without going to this page. This is my code:

<?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');
?>

The problem is that the p开发者_JAVA百科age tries to change due to the “header”, I just would like to send the command but to stay on my page index.php Is there any way to do that?

Thanks a lot!


Use curl

You need to use curl (man page) for this.

POST Example

For example to post a command on to the page you would use:

<?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 example

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

Preventing the requested URL's content from being output to screen

You need to look at the CURLOPT_RETURNTRANSFER option of curl_setopt(). For example:

<?php
$ch = curl_init('http://ipaddress?command=middle');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$return = curl_exec($ch);
?>

Now $return contains the content fromthe requested URL

Documentation

The options used in curl_setopt() are documented here.


If it's fine that it's the server doing the call, use e.g. file_get_contents() to send the command.

If you need the client to make the request, you could e.g. serve an img or iframe element and load the target URL into that.


If I understand correctly, use file_get_contents instead:

<?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');
?>


Yes, you could use Ajax for that. Ajax is better than cURL or file_get_contents since you will stay on your page, exactly where you are.

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();
    }
}

Call it with HTML: <a href='#' onClick='SendData("on");'>Send ON</a>


It's possible, by setting up a cURL session from your script - but don't you rather want to include the file and call a function or something?


Yes, you should look at using cURL.


file_get_contents() for GET request or cURL for GET and POST requests


Yup.

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

Check out the PHP manual for file_get_contents and fopen which have wrappers for fetching http content, enabled by default in most builds.

You can even POST using this method without having to use additional libraries like cURL. If you think this functionality might be useful to you, have a look at stream_get_contents in the PHP manual.

0

精彩评论

暂无评论...
验证码 换一张
取 消