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