|
首页
>> 帮助中心>> 虚拟主机相关问题 |
|
|
各类网站程序修改获取真实IP方法如下: Supesite使用CDN后获取真实IP 办法include/main.inc.php文件,这部分
以下是引用片段: if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $_SGLOBAL['onlineip'] = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $_SGLOBAL['onlineip'] = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $_SGLOBAL['onlineip'] = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $_SGLOBAL['onlineip'] = $_SERVER['REMOTE_ADDR']; } | 替换成
以下是引用片段: function get_real_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]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } $_SGLOBAL['onlineip'] = get_real_ip(); |
Discuz!使用CDN后获取真实IP办法nclude/common.inc.php 找到如下代码:
以下是引用片段: if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $onlineip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $onlineip = $_SERVER['REMOTE_ADDR']; } | 替换为:
以下是引用片段: function get_real_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]; break; } } } return ($ip ? $ip : $_SERVER['REMOTE_ADDR']); } $onlineip = get_real_ip(); |
帝国cms后台记录的ip日志和用户注册记录的ip
\e\class\connect.php搜索function egetip()函数中的获取ip代码修改成以上部分
DZ注册用户IP和邀请码拥有者IP相同的解决办法
方法A:register.php 200行
以下是引用片段: showmessage('register_invite_iperror'); | 改为
以下是引用片段: //showmessage('register_invite_iperror'); | 方法B: 在include/common.inc.php文件中把代码:
以下是引用片段: if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) { $onlineip = getenv('HTTP_CLIENT_IP'); } elseif(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), 'unknown')) { $onlineip = getenv('HTTP_X_FORWARDED_FOR'); } elseif(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), 'unknown')) { $onlineip = getenv('REMOTE_ADDR'); } elseif(isset($_SERVER['REMOTE_ADDR']) && $_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], 'unknown')) { $onlineip = $_SERVER['REMOTE_ADDR']; } | 替换成:代码:
以下是引用片段: $onlineip=getenv('HTTP_X_FORWARD_FOR'); |
做了CDN的ASP网站如何取到用户真实IP程序ASP代码如下:
以下是引用片段: function checkip(checkstring)'用正则判断IP是否合法 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()'取真实IP函数,先 HTTP_CLIENT_IP 再 HTTP_X_FORWARDED_FOR 再 REMOTE_ADDR 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 | ASP.NET获取IP的6种方法
服务端:
以下是引用片段: //方法一 HttpContext.Current.Request.UserHostAddress; //方法二 HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; //方法三 string strHostName = System.Net.Dns.GetHostName(); string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString(); //方法四(无视代理) HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; | 客户端:
以下是引用片段: //方法五 var ip = '<!--#echo var="REMOTE_ADDR"-->'; alert("Your IP address is "+ip); //方法六(无视代理) function GetLocalIPAddress() { var obj = null; var rslt = ""; try { obj = new ActiveXObject("rcbdyctl.Setting"); rslt = obj.GetIPAddress; obj = null; } catch(e) { // } return rslt; } | 来自国外的MCT Maulik Patel提供了一种服务端的解决方案,很好:
以下是引用片段: if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy { ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString(); // Return real client IP. } else// not using proxy or can't get the Client IP { ip=Context.Request.ServerVariables["REMOTE_ADDR"].ToString(); //While it can't get the Client IP, it will return proxy IP. } | 备注: 1. 有些代理是不会发给我们真实IP地址的
2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP
打印
|
|
| |