一般的程序都具备获取用户IP地址的命令但是我们访问网站有两种一种是我们这种普通用户一种是使用代理IP上网的用户下面我来介绍介绍
在asp中获取用户IP地址我们最简单的获取方法就是使用
代码如下
RequestServerVariables("REMOTE_ADDR")
但是如果用户使用了代理服务器IP地址就不对了但我们可通过
代码如下
RequestServerVariables("REMOTE_ADDR")
结果上面的两个获取IP的方法我们可如下操作
代码如下
userip = RequestServerVariables("HTTP_X_FORWARDED_FOR")
If userip = "" Then userip = RequestServerVariables("REMOTE_ADDR")
上面的只是一个简单的判断方法在实际应用中我们可能碰到的情况更多下面看一个不错的实例
代码如下
<%Private Function getIP()
Dim strIPAddr
If RequestServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(RequestServerVariables("HTTP_X_FORWARDED_FOR") "unknown") > Then
strIPAddr = RequestServerVariables("REMOTE_ADDR")
ElseIf InStr(RequestServerVariables("HTTP_X_FORWARDED_FOR") "") > Then
strIPAddr = Mid(RequestServerVariables("HTTP_X_FORWARDED_FOR") InStr(RequestServerVariables("HTTP_X_FORWARDED_FOR") ""))
ElseIf InStr(RequestServerVariables("HTTP_X_FORWARDED_FOR") ";") > Then
strIPAddr = Mid(RequestServerVariables("HTTP_X_FORWARDED_FOR") InStr(RequestServerVariables("HTTP_X_FORWARDED_FOR") ";"))
Else
strIPAddr = RequestServerVariables("HTTP_X_FORWARDED_FOR")
End If
getIP = Trim(Mid(strIPAddr ))
End Function
ip=getIP()
responsewrite(ip)
%>
这样几乎可以获取到用户真实IP地址了但是也不能保存所有代理的都能获取到了只是大家都使用上面的方法
如果有使用aspnet的朋友可参考下面方法来获取
代码如下
//方法一
HttpContextCurrentRequestUserHostAddress;
//方法二
HttpContextCurrentRequestServerVariables["REMOTE_ADDR"];
//方法三
string strHostName = SystemNetDnsGetHostName();
string clientIPAddress = SystemNetDnsGetHostAddresses(strHostName)GetValue()ToString();
//方法四(无视代理)
HttpContextCurrentRequestServerVariables["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("rcbdyctlSetting");
rslt = objGetIPAddress;
obj = null;
}
catch(e)
{
//
}
return rslt;
}