国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術文章
文章詳情頁

通過PHP實現(xiàn)獲取訪問用戶IP

瀏覽:120日期:2022-09-10 13:57:05

在php中自帶了一個非常的簡單的獲取IP地址的全局變量,很多初學都獲取IP都使用它了,但是對于這些我們一般用法是滿足了,但是對于要求高精度這個函數(shù)還是不行的。

這個是最簡單的方法,對于開了透明代理之類的是沒有辦法的,如果內網(wǎng)訪問也不能讀取正確的外網(wǎng)IP,不過很省力就是了:

$ip = $_SERVER['REMOTE_ADDR'];

搞定~

上面方法用來取得客戶端的 IP 地址,但如果客戶端是使用代理服務器來訪問,那取到的就是代理服務器的 IP 地址,而不是真正的客戶端 IP 地址

要想透過代理服務器取得客戶端的真實 IP 地址,就要使用 getenv('HTTP_X_FORWARDED_FOR') 來讀取。但是如果客戶端沒有通過代理服務器來訪問,那么用getenv('HTTP_X_FORWARDED_FOR') 取到的值將是空的。

else if(getenv('HTTP_X_FORWARDED_FOR')) $ip = getenv('HTTP_X_FORWARDED_FOR');

表示如果getenv('HTTP_X_FORWARDED_FOR') 取到的值存在不為空(即客戶端使用代理服務器的情況下),則變量$ip等于getenv('HTTP_X_FORWARDED_FOR') 取到的真實IP值。

如果上面的else if(getenv('HTTP_X_FORWARDED_FOR'))取得的值為空(即沒有使用代理服務器),則不會執(zhí)行下面的$ip = getenv('HTTP_X_FORWARDED_FOR');這一行語句。

這種情況下已經(jīng)確認客戶端沒有使用代理服務器,從而通過

else if(getenv('REMOTE_ADDR'))$ip = getenv('REMOTE_ADDR');

這兩行語句獲得客戶端的IP地址也是真實的IP地址,根據(jù)經(jīng)驗得出

function getIP(){ static $realip; if (isset($_SERVER)){ if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])){ $realip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else if (isset($_SERVER['HTTP_CLIENT_IP'])) { $realip = $_SERVER['HTTP_CLIENT_IP']; } else { $realip = $_SERVER['REMOTE_ADDR']; } } else { if (getenv('HTTP_X_FORWARDED_FOR')){ $realip = getenv('HTTP_X_FORWARDED_FOR'); } else if (getenv('HTTP_CLIENT_IP')) { $realip = getenv('HTTP_CLIENT_IP'); } else { $realip = getenv('REMOTE_ADDR'); } } return $realip;}

另外如果我們想獲取更精準的使用第三方是一個不錯的方法哦

function get_onlineip() { $ch = curl_init(’http://www.ip138.com/ip2city.asp’); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $a = curl_exec($ch); preg_match(’/[(.*)]/’, $a, $ip); return $ip[1]; }

這樣不管理代理還是什么都可以判斷IP地址哦

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標簽: PHP
相關文章:
主站蜘蛛池模板: 青州市| 深水埗区| 新建县| 长顺县| 旺苍县| 浏阳市| 县级市| 英德市| 泸定县| 长宁区| 汤原县| 娄烦县| 日喀则市| 武邑县| 泸定县| 青阳县| 奎屯市| 安丘市| 望谟县| 齐齐哈尔市| 龙井市| 桐梓县| 延庆县| 新巴尔虎左旗| 和田市| 即墨市| 乐陵市| 牟定县| 浠水县| 江西省| 东莞市| 郯城县| 社旗县| 崇左市| 慈溪市| 门源| 永安市| 沙洋县| 保定市| 桓台县| 益阳市|