2010-06-09 257 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