帝国cms获取cdn后的客户端的真实IP

 更新时间:2014年1月13日 21:23  
本站加了免费的cdn以后用户注册的评论的IP都变成了CDN服务器的ip,真是蛋疼啊怎么才能获取用户的真实IP呢,让我们去掉面纱吧本站是帝国cms做的,所以只要修改/e/class/connect.ph

本站加了免费的cdn以后用户注册的评论的IP都变成了CDN服务器的ip,真是蛋疼啊

怎么才能获取用户的真实IP呢,让我们去掉面纱吧

本站是帝国cms做的,所以只要

修改/e/class/connect.php


找到egetip()

将代码

if(getenv('HTTP_CLIENT_IP')&&strcasecmp(getenv('HTTP_CLIENT_IP'),'unknown')) 
	{
		$ip=getenv('HTTP_CLIENT_IP');
	} 
	elseif(getenv('HTTP_X_FORWARDED_FOR')&&strcasecmp(getenv('HTTP_X_FORWARDED_FOR'),'unknown'))
	{
		$ip=getenv('HTTP_X_FORWARDED_FOR');
	}
	elseif(getenv('REMOTE_ADDR')&&strcasecmp(getenv('REMOTE_ADDR'),'unknown'))
	{
		$ip=getenv('REMOTE_ADDR');
	}
	elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))
	{
		$ip=$_SERVER['REMOTE_ADDR'];
	}
	
	
	$ip=RepPostVar(preg_replace("/^([\d\.]+).*/","\\1",$ip));

改成

$ip=false;
	if(!empty($_SERVER["HTTP_CLIENT_IP"]))$ip = $_SERVER["HTTP_CLIENT_IP"];

	if(!empty($_SERVER['HTTP_X_FORWARDED_FOR'])){
		$ips=explode(",",$_SERVER['HTTP_X_FORWARDED_FOR']);
		if($ip){
			array_unshift($ips, $ip);
			$ip = FALSE;
		}
		for($i=0; $i<count($ips);$i++){
			if(!eregi("^(10|172\.16|192\.168)\.",$ips[$i])){
				$ip = $ips[$i];
			}
		}
	}
	return ($ip?$ip : $_SERVER['REMOTE_ADDR']);

这样就可以啦,本站长亲自测试过的,大家可以评论测试一下自己的IP和所在地是不是一致的

相关文章

  • php语言实现redis的客户端

    php语言实现redis的客户端与服务端有一些区别了因为前面介绍过服务端了这里我们来介绍客户端吧,希望文章对各位有帮助。 为了更好的了解redis协议,我们用php来实现...2016-11-25
  • 帝国CMS把[!--list.pageno--]就替换成“第[!--list.pageno--]页

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 打开:e\class\functions.php 修改 $s...2017-07-06
  • php 获得用户的真实IP地址

    一个段经典的代码可以用来获取用户的真实IP地址,包括可以是内网或是外网,有需要的朋友可以参考一下。 代码如下 复制代码 /** * 获得用户的...2016-11-25
  • 帝国CMS商品加入购物车链接代码

    商品加入购物车链接地址为:[!--news.url--]e/ShopSys/doaction.php?enews=AddBuycar&classid=[!--classid--]&id=[!--id--]...2015-12-30
  • 客户端实现蓝牙接收(C#)知识总结

    网上有关蓝牙接收的资料很多,使用起来也很简单,但是我觉得还是有必要把这些知识总结下来,蓝牙开发需要用到一个第三方的库InTheHand.Net.Personal.dll,感兴趣的朋友可以了解下,或许对你有所帮助...2020-06-25
  • 帝国CMS后台登陆验证码不显示的解决方案!

    针对帝国CMS7.0:有得同学开启了后台登陆验证码,但是由于种种原因后台验证码没有显示,然而不填写验证码又无法登陆后台关闭后台验证码,墨鱼给同学们一个解决方案用工具(一定要用工...2016-05-08
  • 帝国CMS调用最新最多评论文章

    /*解决代码高亮太长不换行*/ .syntaxhighlighter{word-break:break-all;} uParse('#newstext', {rootPath: '/e/extend/ueditor/'}) 用灵动标签调用最新最多评论文章: [...2016-08-27
  • 帝国CMS添加百度地图标注方法

    给帝国CMS任意模型加上百度地图标注功能。 第一步:首先在模型建立三个字段: 字段名:map_x 字段类型:DOUBLE 字段名:map_y 字段类型:DOUBLE 字段名:map_z 字段类型:TINYINT...2016-05-19
  • 帝国CMS灵动标签调用当前父栏目下所有子栏目-支持选中状态/高亮

    帝国CMS实现灵动标签调用当前父栏目下所有子栏目-支持选中状态及当前栏目高亮,支持栏目自定义排序。最适用于内容模板,显示父栏目下的子栏目。 支持静态栏目页与动态栏目页 代...2016-05-19
  • 帝国CMS前台信息游客凭密码删除主题

    您是不是期待此插件很久了,帝国论坛上终于有用户开发出来了,首先非常感谢他,在此我整理收集了过来,此插件非常适合一些信息发布的站点使用,如果您正好有此类站点,不凡试试看或许能...2015-12-30
  • 帝国CMS 7.0 在内容页调用当前专题名称和链接

    因为帝国CMS 7.0信息页不再有ztid字段,所以直接是查询不到的,但是可以用灵动标签sql调用,具体调下方法如下:灵动标签sql调用:select ztid from phome_enewsztinfo where classid=...2015-12-30
  • 帝国CMS(ECMS)JS调用购物车数量

    任意页面动态调用购物车数量,不用刷新数据。 同时适用于帝国CMS6.6、7.0 新建一个buycarjs.php文件放在/e/shopsys/buycar/下,代码如下: <?phprequire("../../class/co...2016-05-19
  • 完美解决mysql客户端授权后连接失败的问题

    下面小编就为大家带来一篇完美解决mysql客户端授权后连接失败的问题。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2017-04-03
  • asp.net实现识别客户端浏览器或操作系统

    这里给大家汇总了使用asp.net实现识别客户端浏览器或操作系统的方法和示例代码,有需要的小伙伴可以参考下。...2021-09-22
  • DropDownList添加客户端下拉事件操作

    我们知道,DropDownList下拉框是一个服务器控件,有时候,有些朋友为了方便绑定DropDownList下拉框的选项,但又想在DropDownList实现客户端的下拉事件,那该怎么实现呢?...2021-09-22
  • 帝国CMS下载不采用弹出窗口式说明

    6、下载不采用弹出窗口式说明 ...2016-05-19
  • 帝国CMS安装以及恢复数据模板视频教程

    帝国CMS安装以及恢复数据模板视频教程,主要讲解了墨鱼出品的帝国CMS源码的安装以及数据库模板的回复过程,请大家注意视频里的一些操作细节。选择超清模式播放!...2016-05-08
  • 在页面中输出当前客户端时间javascript实例代码

    这篇文章主要介绍了在页面中输出当前客户端时间javascript实例代码的相关资料,需要的朋友可以参考下...2016-03-03
  • 微信小程序(应用号)开发新闻客户端实例

    这篇文章主要介绍了微信小程序(应用号)开发新闻客户端实例的相关资料,需要的朋友可以参考下...2016-10-25
  • 帝国CMS登录后台提示"您的Cookie没有开启,不能登陆成功"的解决方法

    如果没有动过文件特别是/e/config/config.php文件的话!请按照如下操作肯定就OK了! 到你的主机或者服务器环境里找到php.ini文件(如果不知道在哪联系你的空间商就行了) 找到如下...2016-05-19