使用CDN,获取真实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程序
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种方法

服务端:

使用CDN,获取真实IP办法//方法一
使用CDN,获取真实IP办法HttpContext.Current.Request.UserHostAddress;
使用CDN,获取真实IP办法
使用CDN,获取真实IP办法//方法二
使用CDN,获取真实IP办法HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
使用CDN,获取真实IP办法
使用CDN,获取真实IP办法//方法三
使用CDN,获取真实IP办法string strHostName = System.Net.Dns.GetHostName();
使用CDN,获取真实IP办法string clientIPAddress = System.Net.Dns.GetHostAddresses(strHostName).GetValue(0).ToString();
使用CDN,获取真实IP办法
使用CDN,获取真实IP办法//方法四(无视代理)
使用CDN,获取真实IP办法HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
使用CDN,获取真实IP办法

客户端:

使用CDN,获取真实IP办法//方法五
使用CDN,获取真实IP办法var ip = '<!--#echo var="REMOTE_ADDR"-->';
使用CDN,获取真实IP办法alert("Your IP address is "+ip);
使用CDN,获取真实IP办法
使用CDN,获取真实IP办法//方法六(无视代理)
使用CDN,获取真实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提供了一种服务端的解决方案,很好:

使用CDN,获取真实IP办法if(Context.Request.ServerVariables["HTTP_VIA"]!=null) // using proxy
{
ip=Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();  // Return real client IP.
}
使用CDN,获取真实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.
}
使用CDN,获取真实IP办法
备注:
1. 有些代理是不会发给我们真实IP地址的

2. 有些客户端会因为“header_access deny”的安全设置而不发给我们IP

米粒在线
  • 本文由 发表于 2012年10月31日13:31:25
  • 转载请务必保留本文链接:http://www.miliol.org/751.html
马云惊人言论 引爆金融圈 生活道理

马云惊人言论 引爆金融圈

近日,中国金融四十人论坛(CF40)联合各组委会成员机构在上海召开第二届外滩金融峰会。 马云出席峰会并发表言论,讲演全程金句频出、观点犀利、针砭时弊,在金融圈刷屏。他指出: 1、不必刻意填...
生命的最高境界(非常精辟) 生活道理

生命的最高境界(非常精辟)

       -01-   人生的最高境界   忙中不说错话,乱局不看错人,复杂不走错路。   在忙乱中,难免会说错话;在乱局中,难免会看错人;在岔路口,也会迷途走上歧路。   可见,人生最难...
CNBC:若中美发生贸易战 苹果最为元气大伤 科技

CNBC:若中美发生贸易战 苹果最为元气大伤

北京时间4月28日晚间消息,CNBC知名财经主持人吉姆·克拉默(Jim Cramer)周五表示,如果中美爆发贸易战,则苹果和沃尔玛等美国公司将受到严重影响,尤其是苹果。 克拉默说:“如果对中国发...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: