отправить команду через php - PullRequest
0 голосов
/ 01 сентября 2011

У меня есть веб-страница index.php, с которой я хотел бы отправить команду через другой URL-адрес, но без перехода на эту страницу. Это мой код:

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

4 голосов
/ 01 сентября 2011

Использовать curl

Для этого вам нужно использовать curl (справочная страница) .

Пример 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 вариант curl_setopt().Например:

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

Теперь $return содержит содержимое запрошенного URL

Документация

Параметры, используемые в curl_setopt(), задокументированы здесь .

2 голосов
/ 01 сентября 2011

Если все в порядке, что сервер выполняет вызов, используйте, например, file_get_contents() чтобы отправить команду.

Если вам нужен клиент, чтобы сделать запрос, вы можете, например, обслуживать элемент img или iframe и загружать в него целевой URL.

1 голос
/ 01 сентября 2011

Да, вы можете использовать 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>

1 голос
/ 01 сентября 2011

Если я правильно понимаю, используйте вместо него 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');
?>
0 голосов
/ 01 сентября 2011

Да.

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

Ознакомьтесь с руководством по PHP для file_get_contents и fopen, в которых есть оболочки для извлечения содержимого http, которые включены по умолчанию в большинстве сборок.

Вы даже можете POST использовать этот метод, не используя дополнительные библиотеки, такие как cURL. Если вы считаете, что эта функция может быть вам полезна, посмотрите на stream_get_contents в руководстве по PHP.

0 голосов
/ 01 сентября 2011

file_get_contents () для запроса GET или cURL для запросов GET и POST

0 голосов
/ 01 сентября 2011

Да, вы должны посмотреть на использование cURL .

0 голосов
/ 01 сентября 2011

Это возможно, настроив сеанс cURL из вашего скрипта - но вы не хотите включать файл и вызывать функцию или что-то еще?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...