PHP獲取客戶端IP的方式有很多王财,我這里提取了幾大CMS程序獲取IP的方法,然后總結(jié)整理舌剂,得到下面這個獲取客戶端IP地址的PHP函數(shù),你可以直接把這個函數(shù)復制的你的項目中暑椰,在需要的地方直接調(diào)用就好了霍转,也可以把這兩個函數(shù)封裝到自己的工具類里面,不過需要稍加修改一汽。
這個獲取的IP的真實性還是有一些問題的避消,比如如果用戶使用了梯子,那么這個可能獲取到的IP就是梯子的IP召夹,而不是用戶電腦的真實IP岩喷,不過對于大多啥情況下獲取的IP地址是真實的,所有大可放心拿去在項目中使用监憎。
如果你有更好的獲取客戶端真實IP的方法纱意,希望你在下面的留言中分享出來,讓我也見識見識真正的行家鲸阔!
我試了下不好用 先留著把 回頭有時間改造下
以下就是兩個函數(shù)的代碼
/**
* 獲取用戶IP
* @return string
*/
function getIp()
{
$ip = '未知IP';
if(!empty($_SERVER['HTTP_CLIENT_IP']))
{
return is_ip($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : $ip;
}
elseif(!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
return is_ip($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $ip;
}
else
{
return is_ip($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : $ip;
}
}
/**
* 判斷是否是IP地址
* @param $str
* @return bool|int
*/
function is_ip($str)
{
$ip = explode('.', $str);
for($i=0; $i<count($ip); $i++)
{
if($ip[$i]>255)
{
return false;
}
}
return preg_match('/^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$/', $str);
}