一般的程序都具备获取用户IP地址的命令,但是我们访问网站有两种一种是我们这种普通用户,一种是使用代理IP上网的用户,下面我来介绍介绍。
在asp中获取用户IP地址我们最简单的获取方法就是使用
代码如下 | |
Request.ServerVariables("REMOTE_ADDR") |
但是如果用户使用了代理服务器IP地址就不对了,但我们可通过
代码如下 | |
Request.ServerVariables("REMOTE_ADDR") |
结果上面的两个获取IP的方法我们可如下操作
代码如下 | |
userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR") If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR") |
上面的只是一个简单的判断方法,在实际应用中我们可能碰到的情况更多,下面看一个不错的实例
代码如下 | |
<%Private Function getIP() Dim strIPAddr If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then strIPAddr = Request.ServerVariables("REMOTE_ADDR") ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1) ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1) Else strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR") End If getIP = Trim(Mid(strIPAddr, 1, 30)) End Function ip=getIP() response.write(ip) %> |
这样几乎可以获取到用户真实IP地址了,但是也不能保存所有代理的都能获取到了,只是大家都使用上面的方法。
如果有使用asp.net的朋友可参考下面方法来获取
代码如下 | |
//方法一 HttpContext.Current.Request.UserHostAddress; //方法二 //方法三 //方法四(无视代理) //方法五 //方法六(无视代理) |