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

  • 内容
  • 相关

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

用编辑器打开 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;
}
 就OK了!

本文标签:

版权声明:若无特殊注明,本文皆为《森七》原创,转载请保留文章出处。

本文链接:解决Emlog用CDN加速后无法获取真实IP的问题 - http://www.mosq.cn/post-213.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注。采用输入QQ快速评论,有人回复邮件通知。

评论

10条评论
  1. avatar

    Linux杜朋 Lv.1 Maxthon 5.1.0.4000 Maxthon 5.1.0.4000 Windows Windows 回复

    现在免费支持https的cdn好少啊!

    1. 森七 uBrowser 6.1.3228.1 uBrowser 6.1.3228.1 Windows 7 x64 Edition Windows 7 x64 Edition 回复

      回复了Linux杜朋:好像腾讯云支持来着,新出来的几个cdn或许也可以用

  2. avatar

    微凉 Lv.3 Chrome 40.0.2214.89 Chrome 40.0.2214.89 Android 4.4.4 Android 4.4.4 回复

    可以,很强势,我原来用emlog时也无法获取

    1. 森七 uBrowser 6.1.3228.1 uBrowser 6.1.3228.1 Windows 7 x64 Edition Windows 7 x64 Edition 回复

      回复了微凉:哼,WP了不高兴

    2. 微凉微凉 Lv.3 Chrome 40.0.2214.89 Chrome 40.0.2214.89 Android 4.4.4 Android 4.4.4 回复

      回复了森七:来呀来呀,wp带你飞

  3. avatar

    ☆WR☆ Lv.1 Chrome 49.0.2623.75 Chrome 49.0.2623.75 Windows 7 x64 Edition Windows 7 x64 Edition 回复

    百度云加速也是这样吗

    1. 森七 uBrowser 6.1.3228.1 uBrowser 6.1.3228.1 Windows 7 x64 Edition Windows 7 x64 Edition 回复

      回复了☆WR☆:我是用的百度云,但是没感觉出错,不过我是取消了显示ip的

  4. avatar

    唯历史 Lv.1 Firefox 54.0 Firefox 54.0 Windows 7 x64 Edition Windows 7 x64 Edition 回复

    就不知道对搜索引擎影响大不大

    1. 森七 Chrome 40.0.2214.89 Chrome 40.0.2214.89 Android 5.1.1 Android 5.1.1 回复

      回复了唯历史:照理来说,应该不会

    2. 微凉 Lv.3 Chrome 40.0.2214.89 Chrome 40.0.2214.89 Android 4.4.4 Android 4.4.4 回复

      回复了唯历史:没有影响的