ChinaHost

 找回密码
 用户.注册
查看: 1306|回复: 2

[网站建设] 采用CDN后,如何在网站程序里拿到客户真实上网IP

[复制链接]
发表于 2012-7-2 09:51:46 | 显示全部楼层 |阅读模式
     在没有使用CDN前,我们如果想在网站程序里拿到浏览者的IP,只需要读取 REMOTE_ADDR 这个服务器变量就行了,而采用CDN后,REMOTE_ADDR 这个变量的值并不是浏览者的上网IP,而是CDN节点的IP,而用户的真实上网IP是放在 HTTP_X_FORWARDED_FOR 这个变量里的,既然这样的话,我们只需要写个兼容性的函数来获取IP就行了,代码如下:

1. asp 的示例代码
<%
Function GetClientIP()
Dim ip
ip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If(ip <> "") Then
  Dim arr
  arr = Split(ip,",")
  GetClientIP = arr(0)
Else
  GetClientIP = Request.ServerVariables("REMOTE_ADDR")
End if
End function
Response.Write("您的上网IP是:" + GetClientIP())
%>

2. php 的示例代码
<?
function GetClientIP(){
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
if($ip != ""){
  $arr = explode(",",$ip);
  return $arr[0];
}else{
  return $_SERVER["REMOTE_ADDR"];
}
}
echo "您的上网IP是:".GetClientIP();
?>


3. asp.net 的示例代码
<%@Page Language="C#"%>
<script runat='server'>
private string GetClientIP(){
string ip = Request.ServerVariables["HTTP_X_FORWARDED_FOR"] + "";
if(ip  != ""){
  string[] arr = ip.Split(',');
  return arr[0];
}else{
  return Request.ServerVariables["REMOTE_ADDR"];
}
}

void Page_Load(){
Response.Write("您的上网IP是:" + GetClientIP());
}
</script>

发表于 2013-1-25 11:25:02 | 显示全部楼层
楼主呀,,,您太有才了。。。
发表于 2013-1-25 11:25:09 | 显示全部楼层
站位支持
您需要登录后才可以回帖 登录 | 用户.注册

本版积分规则

手机版|小黑屋|

Processed in 0.026408 second(s), 20 queries , Gzip On.

Powered by Comsenz Discuz! platform.

© 2012-2016 中国主机联盟 专业IDC交流平台,提供服务器、VPS云主机、虚拟主机、域名技术交流及优惠信息

快速回复 返回顶部 返回列表