PHP cURL语法,所以我的Web表单将执行到本地的帖子(IP /命令)

时间:2012-11-16 02:25:26

标签: php http curl network-protocols

伟大的评论主题:https://stackoverflow.com/a/6398220/1679026给了我希望,但我未能解决我的问题。当我使用cURL获取www.php.net页面时,它可以正常运行

我的网络设备位于本地局域网(http://192.168.1.117)上,或者我的客户端站点上的设备(n)位于其LAN(173.18.13.xxx)上。从Local_Browser_Address我可以输入“http://192.168.1.117/#diag/term&cmd=signage+sign+ALARM”,网络设备会响应“ALARM”状态的变化。 < - 这就是我想用一个按钮自动化的东西!

在我的网络表单上,我点击了Alarm_Button时会执行$ _POST PHP代码。我希望我的客户端物理站点上的用户能够在他们的web_form(www.mySite.com/index.php?option=com_rsform&formId=27)中单击the_button - 在他们的浏览器中 - 并且有cURL代码发送/发布/执行该(http-ALARM)地址/指令字符串。我能做这个吗?在发送地址/指令时或之后无需UI。

我试过了:

     $c = curl_init('http://192.168.1.117/u/r/l');
     curl_setopt($c, CURLOPT_HTTPHEADER, array('#diag/term&cmd=signage+sign+ALARM'));
     curl_exec($c);

     $curl = curl_init();
     echo"<br>  the curl resource is ch --> $curl";
     curl_setopt ($curl, CURLOPT_URL, "http://192.168.1.117");
     curl_setopt ($curl, CURLOPT_POST, "/#diag/term&cmd=signage+sign+CELL_IN_ALARM");
     curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
     $result = curl_exec ($curl);
     curl_close ($curl);
     echo"<br>  The RESULT (1) is --> $result";

没有错误消息但没有有用的结果。

首先:我担心我被“no_outside_web_page_doing_junk_locally”等安全限制所阻止。

如果我必须在内部Web服务器上创建本地页面,我可以在同一/相邻网络上的另一台设备上执行此操作。但问题仍然存在,如何在cURL工具中表达ip / command指令。

我已经搜索了StackOverFlow信息,看起来我很接近但却错过了某个地方的“明显的事实”!

希望我的挑战值得您的关注。 谢谢。 --- --- UPDATE

HTTPFox capture of the POST events 突出显示的一个(484)上方和下方的“已发送”值(461)具有相应的POST数据: { “版本”: “1.1”, “方法”: “unit.baseInfo”, “ID”:28, “PARAMS”:[]} {“version”:“1.1”,“method”:“term.cmd”,“id”:29,“params”:[“signage sign CELL_IN_ALARM”]} { “版本”: “1.1”, “方法”: “unit.baseInfo”, “标识”:30, “PARAMS”:[]}

这显示了类型application / jason和 - http://192.168.1.117/jasonrpc-(jasonRemoteProcedureCall?)

的网址

这会使我的斗争简化或复杂化吗?

- 新更新 -

当我运行以下代码时,我得到php.net主页并返回空白“... is - &gt;”第二次回归...

// From http://www.tuxradar.com/practicalphp/15/10/2
  $curl1 = curl_init();
    curl_setopt ($curl1, CURLOPT_URL, "http://www.php.net");
    curl_setopt($curl1, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($curl1);
    curl_close ($curl1);
    print $result;
//====================
  $curl = curl_init();
    curl_setopt ($curl, CURLOPT_URL, "http://192.168.1.117");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    $result = curl_exec ($curl);
    curl_close ($curl);
    //print $result;
  echo"<br>  The RESULT (1) is --> $result";

第一个是www,第二个是我网络上的设备。这是一个原始的网络/网络冲突吗?真的很欣赏这里的大脑周期!

1 个答案:

答案 0 :(得分:1)

您正在考虑CURLOPT_POSTFIELDS

这可以像

一样使用
$ch = curl_init($site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, "field1=value1&field2=value2&field3=value3");
$chx = curl_exec($ch);

还应注意,CURLOPT_POST仅对找到的文档here采用TRUE或FALSE