帝国cms中,在iis下,无法正确获得用户的ip地址的修改方法:
1. 打开文件e/class/connect.php里的egetip函数
2.修改为:
function 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['HTTP_X_FORWARDED_FOR'])&&$_SERVER['HTTP_X_FORWARDED_FOR']&&strcasecmp($_SERVER['HTTP_X_FORWARDED_FOR'],'unknown'))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
//新增结束
elseif(isset($_SERVER['REMOTE_ADDR'])&&$_SERVER['REMOTE_ADDR']&&strcasecmp($_SERVER['REMOTE_ADDR'],'unknown'))
{
$ip=$_SERVER['REMOTE_ADDR'];
}
$ip=RepPostVar(preg_replace("/^([\d\.]+).*/","\\1",$ip));
return $ip;
}
========================
演示地址: www.zhongyf.com 看评论里的ip地址。
根本原因是:php的系统函数getenv在iis下不能起作用。