首页 > cms建站系统 > 帝国cms

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

发布时间:2014-1-13 21:23

本站加了免费的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和所在地是不是一致的

标签:[!--infotagslink--]

您可能感兴趣的文章: