解决Emlog用CDN加速后无法获取真实IP的问题

【摘要】站点启用CDN服务器之后emlog就会无法正确的获取到访客的IP地址,比如360CDN,几乎都是“广东佛山”的显示,解决这个问题我们需要修改一下emlog内核的代码来解决问题。用编辑器(推荐notepad++)打开include/lib...

    站点启用CDN服务器之后emlog就会无法正确的获取到访客的IP地址,比如360CDN,几乎都是“广东佛山”的显示,解决这个问题我们需要修改一下emlog内核的代码来解决问题。

用编辑器(推荐notepad++)打开 include/lib/function.base.php, 在60行左右能找到以下的代码:

function getIp() {
	$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
	if (!ip2long($ip)) {
		$ip = '';
	}
	return $ip;
}


修改为:


function getIp() {
	$ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
	if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) { $list = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);$ip = $list[0]; } 
	if (!ip2long($ip)) {
	$ip = '';
	} 
	return $ip;
}


 小东
 简介:专业团队网站开发、安全运维,合作意向请联系!

扫码关注微信公众号:ITDYBOY,学前端,学安全,从0到1,从1到精通!

扫码关注微信公众号:ITDYBOY

发表评论

游客
送你一朵小花花~

帅人已评(10)

这个方法确实可以大拇指
LV 2 阿飞 6年前 (2019-05-21) 回复
然并卵,修改了依旧没用
本站最强王者 超级大黄瓜 7年前 (2017-08-10) 回复