国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php獲得用戶ip地址的比較不錯的方法

2024-05-04 23:20:50
字體:
來源:轉載
供稿:網友

REMOTE_ADDR只能獲取訪問者本地連接中設置的IP,如某大學校園網中自己設置的10.X.XXX.XXX系列IP,而這個函數獲取的是局域網網關出口的IP地址,如果訪問者使用代理服務器,將不獲取代理服務器的IP,而是獲取訪問者網關的真實IP。如果將這個函數應用到限IP訪問的網頁中,別人即使通過限IP訪問段中的代理服務器,也不能訪問該頁面。

下面提供一個函數:

復制代碼 代碼如下:


<?php

// 定義一個函數getIP()
function getIP()
{
global $ip;

if (getenv("HTTP_CLIENT_IP"))
$ip = getenv("HTTP_CLIENT_IP");
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
else
$ip = "Unknow";

return $ip;
}

// 使用方法:
echo getIP();

?>


getenv("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"))取得的值為空(即沒有使用代理服務器),則不會執行下面的$ip = getenv("HTTP_X_FORWARDED_FOR");這一行語句。

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

復制代碼 代碼如下:


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


這兩行語句獲得客戶端的IP地址也是真實的IP地址。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 壶关县| 曲周县| 娱乐| 北碚区| 长丰县| 满洲里市| 阳城县| 静乐县| 苏尼特右旗| 澄江县| 隆林| 柯坪县| 克什克腾旗| 天门市| 天柱县| 湟源县| 安宁市| 祁连县| 德兴市| 陆良县| 余干县| 历史| 平山县| 儋州市| 广东省| 玉田县| 玛沁县| 武清区| 遂昌县| 黄浦区| 绵阳市| 根河市| 河源市| 无极县| 黔西县| 桂东县| 子洲县| 朔州市| 宁陵县| 陆川县| 绿春县|