PHP获取客户端IP的方式有很多,我这里提取了几大CMS程序获取IP的方法,然后总结整理,得到下面这个获取客户端IP地址的PHP函数,你可以直接把这个函数复制的你的项目中,在需要的地方直接调用就好了,也可以把这两个函数封装到自己的工具类里面,不过需要稍加修改。
这个获取的IP的真实性还是有一些问题的,比如如果用户使用了梯子,那么这个可能获取到的IP就是梯子的IP,而不是用户电脑的真实IP,不过对于大多啥情况下获取的IP地址是真实的,所有大可放心拿去在项目中使用。
如果你有更好的获取客户端真实IP的方法,希望你在下面的留言中分享出来,让我也见识见识真正的行家!
我试了下不好用 先留着把 回头有时间改造下
以下就是两个函数的代码
/**
* 获取用户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);
}