Chinaunix首页 | 论坛 | 博客
  • 博客访问: 656665
  • 博文数量: 220
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1961
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-04 21:54
文章分类

全部博文(220)

文章存档

2018年(1)

2015年(140)

2014年(79)

我的朋友

分类: PHP

2015-03-18 17:32:14


使用了国外的空间的站长经常会苦恼空间访问速度慢,DNS解析反应慢的问题。为了解决这些问题,最好的办法就是使用CDN,加快博客和网站从国内的访问速度,提高用户体验度。

然而,网站在使用CDN服务后,却发现了一个问题:无法获取到用户访问的真实IP。后台注册或者评论显示的用户IP全部是CDN的IP,或者某一个固定IP地址。这样显然会影响一些功能的使用。

解决上面的问题,一种方法是插件法,这个方法不需要修改任何代码,简单方便。另一种方法自然是修改代码,通用性比较强。如果你的网站的访问速度慢,不妨试用下面的免费CDN,配以本篇文章的介绍的方法,就完美了。

  • 1、(日本CDN节点加快访问果然有效果)
  • 2、(解决CDN导致网站打不开的问题)
  • 3、(搜集了一些可以长期使用的,适合新手)

网站使用CDN服务后统计网站真实的用户访问情况获取真实IP

一、安装CloudFlare WordPress插件获取真实IP

1、如果你的Wordpress正在使用CloudFlare,那么可以直接安装CloudFlare WordPress插件,这款官方提供的插件的主要作用就是获取真实IP,另外它还会对你的WP进行一定的优化。

2、这里是,你可以直接在Wordpress后台插件页面中搜索安装。

3、安装后,先到你的CloudFlare账户中,获取API KEY,如下图:

cloudflare获取Key

4、然后回到Wordpress后台的CloudFlare设置中,添加以上信息,如下图:

添加Wordpress信息

5、提示如下就表示完成了,这个插件就可以正常工作了。

插件正常工作了

6、另外,在CloudFlare插件页面的下方还有一个优化功能,点击它,CloudFlare会对你的Wordpress进行自动优化。如下图:

插件对WP自动优化

二、安装Incapsula WordPress插件得到真实IP

1、如果你的Wordpress正在使用Incapsula免费CDN服务,照样可以方便安装Incapsula WordPress插件。这款插件就是由Incapsula官方提供的。

2、该插件会通过设置$_SERVER['REMOTE_ADDR']来获取用户的真实IP,同时Incapsula WordPress插件会在所有插件执行前完成获取真实IP的工作,从而让其它插件得到准确数据。

3、这里是,当然可以直接从Wordpress后台直接安装。安装完成后,不需要任何操作,就可以正常工作了。

安装Incapsula插件

三、修改Wordpress配置文件来获取准确IP地址

1、将一下代码添加到wp-config.php文件开头即可。

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

2、效果见下图:

修改WP配置文件

四、Discuz!论坛修改代码获取用户真实IP

1、Discuz!论坛貌似没有专门的插件来解决使用了CDN后获取用户的真实IP的问题,但是我们可以通过修改代码的方法来实现。

2、Discuz! X2修改的方法是:用Notepad+打开/source/class/class_core.php 文件,搜索“HTTP_CLIENT_IP”,定位我们要修改的代码。如下图:

查找代码

3、这上图中三行代码全部删除,记住只删除这三行代码,然后加入以下代码作替代。

 if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER['HTTP_X_FORWARDED_FOR'],
if(isset($_SERVER['HTTP_X_FORWARDED_FOR']) AND preg_match_all(‘#\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}#s’, $_SERVER['HTTP_X_FORWARDED_FOR'], 

4、Discuz! X2.5修改的方法是:打开/source/class/discuz/discuz_application.php文件,搜索“HTTP_CLIENT_IP”,同样找到这三行,用以上代码替换。如下图:

定位代码

5、最后的效果如下图:

修改代码

6、当然不要忘记到Discuz! 后台更新一下缓存。

更新缓存

五、CDN加速后ASP网站获取用户真实IP的方法

1、请用下列代码来代替你在ASP中获取用户IP的程序代码。

2、代码如下:

 Function checkip(checkstring)     
dim re1   
set re1=new RegExp   
re1.pattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"  
re1.global=false   
re1.Ignorecase=false   
checkip=re1.test(checkstring)   
set re1=nothing   
End Function  

Function get_cli_ip()   
dim client_ip   
if checkip(Request.ServerVariables("HTTP_CLIENT_IP"))=true then   
get_cli_ip = checkip(Request.ServerVariables("HTTP_CLIENT_IP"))   
else   
MyArray = split(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")   
if ubound(MyArray)>=0 then   
client_ip = trim(MyArray(0))   
if checkip(client_ip)=true then   
get_cli_ip = client_ip   
exit function   
end if   
end if   
get_cli_ip = Request.ServerVariables("REMOTE_ADDR")   
end if   
end function 

六、获取IP小结

1、主流的网站程序,如Wordpress、Discuz!在使用CDN后获取真实IP网上都有非常多的教程,很容易解决这个问题。

2、非主流的网站程序,可以用PHP、ASP代码获取CDN后真实IP的通用方法来解决这一问题。

文章出自:  版权所有。本站文章除注明出处外,皆为作者原创文章,可自由引用,但请注明来源。 禁止全文转载。

阅读(3568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~