2013-04-07 204 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; 
}