下面的函数是获取访问者IP
' ============================================
' 获取访问者IP地址
' ============================================
Function GetUserTrueIP()
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
GetUserTrueIP = Trim(Mid(strIPAddr, 1, 30))
End Function
在ASP 中使用 Request.ServerVariables("REMOTE_ADDR") 来取得客户端IP 地址但如果客户端是使用代理服务器来访问那取到就是代理服务器IP 地址而不是真正客户端 IP 地址要想透过代理服务器取得客户端真实IP 地址就要使用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取不过要注意事并不是每个代理服务器都能用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 来读取客户端真实IP有些用此思路方法读取到仍然是代理服务器IP还有点需要注意是:如果客户端没有通过代理服务器来访问那么用 Request.ServerVariables("HTTP_X_FORWARDED_FOR") 取到值将是空因此如果要在中使用此思路方法可以这样处理:userip = Request.ServerVariables("HTTP_X_FORWARDED_FOR")If userip = "" Then userip = Request.ServerVariables("REMOTE_ADDR")即:如果客户端通过代理服务器则取HTTP_X_FORWARDED_FOR值如果没通过代理服务器就取REMOTE_ADDR值上篇文章:个延时自动关闭计算机脚本!下篇文章: 用ASP技术编制隐藏用户密码你是否重新定义过msgbox() , 如果没有,msgbox() 不能在服务器端执行,从服务器弹出一个窗口,可能吗,msgbox() 只能有浏览器执行,所以要用静态VBscript<%
nip=split(ip,".") '把"ip" 的引号去掉 ,"ip"是两个字母的字符串,ubound(nip)=1,要用变量ip
if not ubound(nip)=3 then
%>
<SCRIPT LANGUAGE="VBScript">msgbox("IP地址格式不正确!") </script>
<%
else
%>
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)