CDN下获取访客真实IP,并且获取地理位置!

CDN下获取访客真实IP,并且获取地理位置!

初学PHP,在研究源码的时候,给网站使用了cloudflare,导致无法获取用户真实ip。最后发现在源码中,获取ip的方式是$ip = $_SERVER['REMOTE_ADDR'];
CDN下获取访客真实IP,并且获取地理位置!
print_r了$_SERVER,这才想起来是超级全局变量。
发现真实IP是存在HTTP_CF_CONNECTING_IP里的,最后搜索了一下解决方案,有现成的就直接拿过来用了。

if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])){
	$ip_list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
	$_SERVER['REMOTE_ADDR'] = $ip_list[0]; 
}

但是此时又出现了问题,网站能正确获取用户真实ip,但显示地址的时候还是有问题。
然后回去查看源码,发现使用的是126的接口,估计是数据库更新不及时,ip判断不准确。
//更新用户ip

function jinsom_update_ip($user_id) {
	$city_lock=get_user_meta($user_id,'city_lock',true);
	if($city_lock=='unlock'||!$city_lock) {
		$ip = $_SERVER['REMOTE_ADDR'];
		$str = file_get_contents('http://ip.ws.126.net/ipquery?ip='.$ip);
		$str1= explode('localAddress={city:"',$str);
		$str1=iconv("gb2312","UTF-8",$str1['1']);
		$str2= explode('", province',$str1);
		$p1=explode('province:"',$str1);
		$p2=explode('"',$p1['1']);
		if($str2['0']==''||$str2['0']==$p2['0']) {
			$city=$p2['0'];
		} else {
			$city=$p2['0'].'·'.$str2['0'];
		}
		update_user_meta($user_id,'city',$city);
	}
}

搜索了几个接口,发现了taobao的接口很完美,于是着手替换http://ip.taobao.com/service/getIpInfo.php?ip=

但是此时又出现了新问题,126的接口传回来的数据是个数组直接能用,taobao接口传回来的是json格式的,那只能又去搜,最后发现了json_decode(),在之前的代码上按我的理解修改测试。
最终完美替换成taobao的接口,前台正确显示了地理位置,很棒!

function jinsom_update_ip($user_id) {
	$city_lock=get_user_meta($user_id,'city_lock',true);
	if($city_lock=='unlock'||!$city_lock) {
		$ip = $_SERVER['REMOTE_ADDR'];
		$url="http://ip.taobao.com/service/getIpInfo.php?ip=".$ip;
		$ip=json_decode(file_get_contents($url));
		if((string)$ip->
		code=='1') {
			return false;
		} else {
			$data = (array)$ip->
			data;
		}
		if($data['country']==''||$data['region']==$data['city']) {
			$city=$data['city'];
		} else {
			$city=$data['region'].'·'.$data['city'];
		}
		update_user_meta($user_id,'city',$city);
	}
}

本文作者:ZKCOI

文章名称:CDN下获取访客真实IP,并且获取地理位置!

文章链接:https://www.zkcoi.com/365up/program/242.html

本站资源仅供个人学习和交流,如若转载,请注明出处,详见《免责声明》

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
ZKCOIZKCOI
【未加密】超实用一键破解网页不能复制/右键菜单限制的 Bookmarklet 收藏夹书签小工具
上一篇 2019年6月3日 上午9:45
wecenter3.3.2匿名发帖后,手机版仍显示发帖用户解决办法
下一篇 2019年7月8日 下午2:09

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系博主

立即联系
一般有空就回复

qrcode_web

微信扫码联系我

insert_link 友情链接
分享本页
返回顶部