向远程服务器发送查询

时间:2015-09-08 17:21:52

标签: php forms

我正在尝试创建一个PHP代码,它将在一个地方提供我们需要的所有信息。

我们需要的一些信息在https://link

我能够使用php表单直接向它发送查询,但唯一的麻烦是只有在有人执行了手动搜索后才能运行。一旦有人搜索了某些内容,那么它一直有效,直到浏览器关闭。

用户关闭浏览器后,会再次开始返回错误。

尝试打开此链接而不进行手动搜索。 https://link

会出现错误,现在打开第一个链接https://然后搜索某些内容。

现在再次打开此链接:https://searchType=singleQuery&phrase=exact&keywords=02284065

不应该出错。

有人向我解释发生了什么以及如何解决这个问题?

感谢。

编辑:
我无法访问远程服务器上的代码。在我结束时我正在使用

    <?php
     echo file_get_contents(searchType=singleQuery&phrase=exact&keywords=02284065");
 ?>

进行测试。一旦我解决了这个问题,我就会进一步开发代码。

编辑:这是我到目前为止,它返回表单,但不提交表单。

<?php
$url='https:/';
$keywords ='';
$ch = curl_init() ;
curl_setopt( $ch, CURLOPT_URL, "$url" );
curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $ch, CURLOPT_POST, true );
curl_setopt( $ch, CURLOPT_SSL_VERIFYPEER, false );
curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
$data = array(
'keywords' => "$keywords",
'Search' => 'submit'
);
curl_setopt( $ch, CURLOPT_POSTFIELDS, $data );
$output = curl_exec( $ch );
curl_close( $ch );
echo "$output\n";
?>

2 个答案:

答案 0 :(得分:2)

您很可能以不正当的方式尝试使用此服务。现在,许多门户网站只接受来自&#34;白名单&#34;的查询(以及更准确的POST请求)。客户。此白名单中的客户可以是网站本身,也可以是授权的移动应用程序。

您应该了解Same Origin Policy,作为&#34;基本&#34;我们正在谈论的内容。

通常,由网站所有者决定谁可以查询服务器,谁不会查询服务器。

解决方案:您应该联系 healthinfo.moh.gov.on.ca 管理员并询问他们是否有一些API,以便将您的数据放入更有条理和更正确的方式。

编辑:由于某些会话数据,您可以在网站上手动搜索后进行搜索。之后,会话过期,您无法继续。

答案 1 :(得分:2)

同意Francesco - 尤其是关于滥用和联系提供者 - 但会添加,用于教育目的:

尝试使用cURL请求而不是file_get_contents。

php doc examples

发生的片段现在正在处理:

public function triggerMessage(Contact $tocontact, $msgid)
{
  $msgurl = 'https://www.server.com/t/?' . $msgid;
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, $msgurl);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_POST, count(get_object_vars($tocontact)));
  curl_setopt($ch, CURLOPT_POSTFIELDS, $this->contactToUrlParams($tocontact));
  $result = curl_exec($ch);
  curl_close($ch);

  return $result;
}