2010-06-09 236 views
1

可能重复:
How to get the client IP address in PHP?如何获取IP地址?

我想谁查看页面的用户的IP地址。怎么能?

+3

可能重复的[如何在PHP web服务中获取客户端的IP地址?](http://stackoverflow.com/questions/1437771/how-can-i-get-the-clients-ip -address-IN-A-PHP-web服务)。另外[如何获取客户端IP地址](http://stackoverflow.com/questions/3003145/how-to-get-client-ip-address),这恰恰是在25分钟前询问的 – 2010-06-09 05:16:51

+0

这些人在同一个办公室。 。制作SO的傻瓜:) 它的100%OFFICE重复http://stackoverflow.com/questions/3003145/how-to-get-client-ip-address – 2010-06-09 05:19:38

回答

4

可以使用$_SERVER['REMOTE_ADDR'];

一个例子

$userIP = $_SERVER['REMOTE_ADDR'];

2

$ _SERVER [ 'REMOTE_ADDR']

'REMOTE_ADDR' - IP地址从该用户正在观看的当前页面。

$ _ SERVER [ 'REMOTE_HOST']

'REMOTE_HOST' - 从用户正在浏览当前页面的主机名。反向dns查找基于用户的REMOTE_ADDR。

注意:您的网络服务器必须配置为创建此变量。例如在Apache中,您需要在httpd.conf中存在HostnameLookups On。

$ _ SERVER [ 'REMOTE_PORT']

'REMOTE_PORT' - 端口正在用户的计算机上使用与Web服务器进行通信。

+0

请在提及时引用 - http:// php .net/manual/en/reserved.variables.server.php – 2011-09-06 11:14:16

4

$_SERVER获取REMOTE_ADDR的值通常非常简单,但有时当用户位于代理服务器后面时,该值将是代理服务器的值,而不是用户的值。一个“好的”代理服务器会把用户的IP放在其他头文件中,比如HTTP_CLIENT_IPX_FORWARDED_FOR

但是,应该提到的是,可能没有获得客户IP的完美方式。下面的方法会考虑用户是否在代理之后。

if(array_key_exists("HTTP_CLIENT_IP",$_SERVER) 
&& !empty($_SERVER["HTTP_CLIENT_IP"])) { 
    return $_SERVER["HTTP_CLIENT_IP"]; 
} 
else if(array_key_exists("X_FORWARDED_FOR",$_SERVER) 
&& !empty($_SERVER["X_FORWARDED_FOR"])) { 
    return $_SERVER["X_FORWARDED_FOR"]; 
} 
else { 
    return = $_SERVER["REMOTE_ADDR"]; 
} 
+0

at last line => return $ _SERVER [“REMOTE_ADDR”]; – 2011-06-08 05:13:18