2015-09-08 159 views
-3

我想創建一個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"; 
?> 
+0

請提供代碼,以便我們可以深入實際的問題,而不是猜測可能是什麼。 – DeDee

+0

請提供有關錯誤的更多信息 – maniteja

+0

請參閱上面的修改。謝謝。 – rm65453

回答

2

這很可能是您嘗試以不正確的方式使用此服務。現在,許多門戶只是從客戶的「白名單」接受查詢(更準確地說是POST請求)。此白名單中的客戶可能是網站本身,也可能是授權的移動應用。

您應該瞭解有關Same Origin Policy的信息,作爲我們所談論內容的「基本」。

通常,網站所有者決定誰可以查詢服務器,誰不能查詢。

解決方案:你應該聯繫healthinfo.moh.gov.on.ca管理員,詢問他們是否有一些API,以獲得更結構化和正確的方法您的數據。

編輯:可能你可以在網站上的手動之後做一些搜索,因爲有些會話數據。之後,會話過期,您無法繼續。

+0

我會嘗試,但它的政府網站,會很驚訝,如果他們能夠提供任何有用的信息。您認爲它是一個成功搜索後放置的cookie,它允許我的代碼在瀏覽器關閉之前工作? – rm65453

+0

我不是在談論cookie,而是會話。不同的概念! :)另外,如果您嘗試在沒有正確權限的情況下提供政府數據,您可能會偶然發現許多法律問題......請注意! –

+1

我肯定會要求許可。現在只是測試可行性。感謝你的幫助。 – rm65453

2

同意Francesco - esp。關於濫用和聯繫供應商 - 但會增加,爲教育目的:

嘗試使用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; 
} 
+0

剛發送一封電子郵件給提供商。在實際的代碼在php中運行之前,是否可以使用curl在後臺發送虛擬查詢?這基本上可以解決我的問題。 – rm65453

+0

捲曲肯定可以從cli運行。如果你碰巧在linux上:http://www.thegeekstuff.com/2012/04/curl-examples/ –

+0

上午在Windows服務器2008 R2上運行PHP。 php_curl擴展已啓用。不知道這是否有幫助。 – rm65453

相關問題