中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP中怎么獲取客戶端IP

發布時間:2021-06-29 18:05:20 來源:億速云 閱讀:368 作者:Leah 欄目:編程語言

PHP中怎么獲取客戶端IP,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

一、沒有使用代理服務器的PHP獲取客戶端IP情況:

REMOTE_ADDR = 客戶端IP
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

二、使用透明代理服務器的情況:Transparent Proxies

REMOTE_ADDR = ***一個代理服務器 IP
HTTP_X_FORWARDED_FOR = 客戶端真實 IP (經過多個代理服務器時,這個值類似:221.5.252.160, 203.98.182.163, 203.129.72.215)
這類代理服務器還是將客戶端真實的IP發送給了訪問對象,無法達到隱藏真實身份的目的。

三、使用普通匿名代理服務器的PHP獲取客戶端IP情況:Anonymous Proxies

REMOTE_ADDR = ***一個代理服務器 IP
HTTP_X_FORWARDED_FOR = 代理服務器 IP (經過多個代理服務器時,這個值類似:203.98.182.163, 203.98.182.163, 203.129.72.215)
這種情況下隱藏了客戶端的真實IP,但是向訪問對象透露了客戶端是使用代理服務器訪問它們的。

四、使用欺騙性代理服務器的情況:Distorting Proxies

REMOTE_ADDR = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 隨機的 IP(經過多個代理服務器時,這個值類似:220.4.251.159, 203.98.182.163, 203.129.72.215)
這種情況下同樣透露了客戶端是使用了代理服務器,但編造了一個虛假的隨機IP(220.4.251.159)代替客戶端的真實IP來欺騙它。

五、使用高匿名代理服務器的PHP獲取客戶端IP情況:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服務器 IP
HTTP_X_FORWARDED_FOR = 沒數值或不顯示

無論是REMOTE_ADDR還是HTTP_FORWARDED_FOR,這些頭消息未必能夠取得到,因為不同的瀏覽器不同的網絡設備可能發送不同的IP頭消息。因此PHP使用$_SERVER["REMOTE_ADDR"] 、$_SERVER["HTTP_X_FORWARDED_FOR"] 獲取的值可能是空值也可能是“unknown”值。

因此,使用PHP獲取客戶端IP的代碼可以如下:

  1. function getip() {  

  2. $unknown = 'unknown';  

  3. if ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) 
    && $_SERVER['HTTP_X_FORWARDED_FOR'] 
    && strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'], 
    $unknown) ) {  

  4. $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];  

  5. } elseif ( isset($_SERVER['REMOTE_ADDR']) 
    && $_SERVER['REMOTE_ADDR'] && 
    strcasecmp($_SERVER['REMOTE_ADDR'], $unknown) ) {  

  6. $ip = $_SERVER['REMOTE_ADDR'];  

  7. }  

  8. /*  

  9. 處理多層代理的情況  

  10. 或者使用正則方式:$ip = preg_match("/[\d\.]
    {7,15}/", $ip, $matches) ? $matches[0] : $unknown;  

  11. */  

  12. if (false !== strpos($ip, ','))  

  13. $ip = reset(explode(',', $ip));  

  14.  return $ip;  

PHP獲取客戶端IP時另外一點需注意,使用函數getenv(’HTTP_X_FORWARDED_FOR’)或getenv(’REMOTE_ADDR’) 也可以如上代碼一樣取得同樣的效果。但getenv()不支持在IIS的isapi方式下運行的PHP。

關于PHP中怎么獲取客戶端IP問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

北海市| 龙海市| 西昌市| 阜新市| 建瓯市| 河西区| 忻城县| 鲁山县| 政和县| 康马县| 滁州市| 二连浩特市| 常山县| 威远县| 邢台市| 祁阳县| 左贡县| 香港| 岫岩| 黎城县| 乐平市| 聊城市| 罗甸县| 达州市| 乡城县| 田林县| 灵武市| 丹凤县| 开远市| 武邑县| 腾冲县| 长岛县| 武汉市| 和顺县| 南木林县| 荔波县| 上蔡县| 新民市| 昌宁县| 杨浦区| 张家界市|