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();
?>
復制代碼 代碼如下:
else if(getenv("HTTP_X_FORWARDED_FOR"))
$ip = getenv("HTTP_X_FORWARDED_FOR");
復制代碼 代碼如下:
else if(getenv("REMOTE_ADDR"))
$ip = getenv("REMOTE_ADDR");
新聞熱點
疑難解答