這篇文章主要介紹了關於PHP取得客戶端真實IP位址的方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
##推薦手冊:php完全自學手冊
REMOTE_ADDR HTTP_CLIENT_IP HTTP_X_FORWARDED_FOR HTTP_VIA
相關文章推薦:1.
php如何取得使用者的ip位址 2.
php如何取得客戶端的ip位址?
相關影片推薦:1.
獨孤九賤(4)_PHP影片教學
三個值差異如下:
一、沒有使用代理伺服器的情況:
REMOTE_ADDR = 您的IPHTTP_VIA = 沒數值或不顯示
HTTP_X_FORWARDED_FOR = 沒數值或不顯示
二、使用透明代理伺服器的情況:Transparent Proxies
REMOTE_ADDR = 最後一個代理伺服器IPHTTP_VIA =
REMOTE_ADDR = 最後一個代理伺服器IP
HTTP_VIA =代理伺服器IP
三、使用一般匿名代理伺服器的情況:Anonymous Proxies
REMOTE_ADDR = 最後一個代理伺服器IP
HTTP_VIA = 代理伺服器IP
四、使用欺騙性代理伺服器的情況:Distorting Proxies
REMOTE_ADDR = 代理伺服器IP
HTTP_VIA = 代理伺服器IP
五、使用高匿名代理伺服器的情況:High Anonymity Proxies (Elite proxies)
REMOTE_ADDR = 代理伺服器IP
#HTTP_VIA = 沒數值或不顯示
六、取得客戶端真實的IP位址實例:
function get_real_ip() { $ip=FALSE; //客户端IP 或 NONE if(!empty($_SERVER["HTTP_CLIENT_IP"])){ $ip = $_SERVER["HTTP_CLIENT_IP"]; } //多重代理服务器下的客户端真实IP地址(可能伪造),如果没有使用代理,此字段为空 if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode (", ", $_SERVER['HTTP_X_FORWARDED_FOR']); if ($ip) { array_unshift($ips, $ip); $ip = FALSE; } for ($i = 0; $i < count($ips); $i++) { if (!eregi ("^(10│172.16│192.168).", $ips[$i])) { $ip = $ips[$i]; break; } } } //客户端IP 或 (最后一个)代理服务器 IP return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); }
以上是PHP取得客戶端真實IP位址的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!