2012-02-20 41 views
0

我跟着這個網站 How do I retrieve the visitor's ISP through PHP? 獲取ISP數據,但它不再工作(無法打開流:HTTP請求失敗)。我還試圖用生硬的我如何通過PHP檢索訪客的ISP

$curl_handle=curl_init(); 
curl_setopt($curl_handle, CURLOPT_URL,'http://www.whatismyipaddress.com/ip/132.123.23.23'); 
curl_setopt($curl_handle, CURLOPT_HTTPHEADER, Array("User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.15) Gecko/20080623 Firefox/2.0.0.15")); 
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); 
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Your application name'); 
$query = curl_exec($curl_handle); 
curl_close($curl_handle); 

echo $query; 

,但我發現了以下錯誤:

Moved Permanently  
The document has moved here. 

有誰知道類似的解決方案?


EDITED

捲曲解決方案是在我的本地唯一的工作,遺憾的是主網絡服務不允許。有人知道使用file_get_contents的解決方案嗎?

+1

這不僅僅是301重定向到非www版本嗎?另請注意,這違反了[TOS](http://whatismyipaddress.com/terms-of-use)。 – cmbuckley 2012-02-20 18:37:51

+0

啊,是的,它的工作 – 2012-02-20 18:39:53

回答

2

設置選項

curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true); 

跟隨頭重定向。

+0

curl解決方案只在我的本地主機上工作,不幸的是,Web主機服務不允許。有人知道使用file_get_contents的解決方案嗎? – 2012-02-20 18:50:45

+0

取決於在遠程服務器上啓用的設置。檢查phpinfo()輸出並查找allow_url_fopen。如果已啓用,則可以在URL上使用file_get_contents。 – cmbuckley 2012-02-22 09:33:48

0

$ _ SERVER [「REMOTE_ADDR」]

注意,如您所願,如果用戶是在NAT防火牆後面,這可能無法正常工作。

+0

OP要的是ISP,而不是IP。 – JJJ 2012-02-20 18:42:38

+0

這就是爲什麼我使用的是這樣的:如果($這個 - > validip($ _ SERVER [ 「HTTP_CLIENT_IP」])){\t \t \t \t \t返回$ _ SERVER [ 「HTTP_CLIENT_IP」]; \t \t \t \t} \t \t \t \t的foreach(爆炸( 「 」$ _ SERVER [「 HTTP_X_FORWARDED_FOR」])爲$ IP){\t \t \t \t \t如果($這 - > validip(修剪($ ip))){\t \t \t \t \t \t \t return $ ip; \t \t \t \t \t \t} \t \t \t \t} \t \t \t \t如果($這 - > validip($ _ SERVER [ 「HTTP_X_FORWARDED」])){\t \t \t \t \t返回$ _SERVER [「HTTP_X_FORWARDED 「]; \t \t \t } \t \t \t ELSEIF($這 - > validip($ _ SERVER [ 「HTTP_FORWARDED_FOR」])){\t \t \t \t \t返回$ _SERVER [ 「HTTP_FORWARDED_FOR」]; \t \t \t } \t \t \t ELSEIF($這 - > validip($ _ SERVER [ 「HTTP_FORWARDED」])){\t \t \t \t \t返回$ _SERVER [ 「HTTP_FORWARDED」]; \t \t \t \t ... – 2012-02-20 18:44:02