摘要:要想透過代理服務器取得客戶端的真實地址,就要使用來讀取。還有一點需要注意的是如果客戶端沒有通過代理服務器來訪問,那么用取到的值將是空的。獲取客戶端相關文章獲取用戶地址通用方法常見安全隱患
1.REMOTE_ADDR:瀏覽當前頁面的用戶計算機的ip地址
2.HTTP_X_FORWARDED_FOR: 瀏覽當前頁面的用戶計算機的網關
3.HTTP_CLIENT_IP:客戶端的ip
在PHP 中使用 $_SERVER["REMOTE_ADDR"] 來取得客戶端的 IP 地址,但如果客戶端是使用代理服務器來訪問,那取到的就是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址。要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取。
不過要注意的事,并不是每個代理服務器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 來讀取客戶端的真實 IP,有些用此方法讀取到的仍然是代理服務器的 IP。
還有一點需要注意的是:如果客戶端沒有通過代理服務器來訪問,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值將是空的。
/** * 獲取客戶端IP * @return string */ function get_client_ip() { $realip = ""; if ($_SERVER["HTTP_X_FORWARDED_FOR"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_X_FORWARDED_FOR"])) { $realip = $_SERVER["HTTP_X_FORWARDED_FOR"]; } else if ($_SERVER["HTTP_CLIENT_IP"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["HTTP_CLIENT_IP"]; } else if($_SERVER["REMOTE_ADDR"] && preg_match("/^([0-9]{1,3}.){3}[0-9]{1,3}$/", $_SERVER["HTTP_CLIENT_IP"])) { $realip = $_SERVER["REMOTE_ADDR"]; } return $realip; }
相關文章:
獲取用戶Ip地址通用方法常見安全隱患(HTTP_X_FORWARDED_FOR)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/21954.html
摘要:之前的文章可以關注我的面試專欄獲取,或者關注我的公眾號琉憶編程庫查看歷史獲取。面試時如何給自己添金沒接觸過支付功能為此特意準備了一篇新手零基礎對接境外支付的文章,為你面試添金,關注公眾號琉憶編程庫,回復,我發給你。 你好,是我琉憶。本篇是本周(2019.2-25至3-1)的最后一篇文章。之前的文章可以關注我的PHP面試專欄獲取,或者關注我的公眾號琉憶編程庫查看歷史獲取。 我正在segm...
摘要:但是在通過了,等反向代理軟件就不能獲取到客戶端的真實地址了。下面是一個參考獲取客戶端地址的方法如果使用的是連接池,可以參考使用方法,但這個是經過多級代理的地址,需要自己處理下獲取第一個。 showImg(https://segmentfault.com/img/remote/1460000015379119); 在JSP里,獲取客戶端的IP地址的方法是:request.getRemot...
閱讀 819·2023-04-25 19:40
閱讀 3417·2023-04-25 17:41
閱讀 2998·2021-11-11 11:01
閱讀 2605·2019-08-30 15:55
閱讀 3222·2019-08-30 15:44
閱讀 1352·2019-08-29 14:07
閱讀 481·2019-08-29 11:23
閱讀 1320·2019-08-27 10:54