2013-04-07 242 views
0

我試圖從兩個不同的方法從一個網站(www.website.com) 獲得IP地址。從網站拉IP地址

在www.website.com我用$_SERVER['REMOTE_ADDR']和送過來www.website.com的IP地址www.website2.com。然後,我使用www.website2.com上的gethostbyname("www.website.com")來搜索www.website.com的IP地址,以便將它們進行比較,但由於某些原因,它們並不相同。

爲什麼在IP地址各不相同?

+0

未來它們是否都託管在同一域名服務器? – christopher 2013-04-07 17:35:24

+0

現在可以,但有些網站可能不會。 – 2013-04-07 17:36:01

+0

如果他們使用專用IP,他們可以被託管在相同的名稱服務器和服務器上,同時擁有不同的IP。名稱服務器只是將用戶引導至正確的IP。 – RageD 2013-04-07 17:37:39

回答

1

$_SERVER['REMOTE_ADDR']給出了發出HTTP請求的客戶端的IP地址,而不是承載該腳本的服務器的IP地址(保存在$_SERVER['SERVER_ADDR']中)。

+0

'REMOTE_HOST'會正常工作嗎? – 2013-04-07 17:36:39

+0

@ChristianDaley - 當我在我的服務器上運行'print_r($ _ SERVER)'時,該鍵不會出現,所以我不會這麼想。 – Quentin 2013-04-07 17:38:14

+0

'SERVER_ADDR'完美無缺!謝謝!給它8分鐘,我會將其標記爲答案。 – 2013-04-07 17:40:18

-1

這也說明了IP地址從HTTP_CLIENT_IPHTTP_X_FORWARDED_FOR

/** 
* getVisitorIP 
* 
* Gets visitor IP address 
* 
* @return string Visitor IP address 
*/ 
public function getVisitorIP() { 
    $ip = $_SERVER['REMOTE_ADDR'];  
    if (!empty($_SERVER['HTTP_CLIENT_IP'])) { 
     $ip = $_SERVER['HTTP_CLIENT_IP']; 
    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { 
     $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; 
    } 
    return $ip; 
}