工作上某些網站需要做IP鎖定跟登入的動作
沒想到卻發現某些ISP出來的Clinent IP
在單純使用Request.ServerVariables("REMOTE_ADDR") 的時候
不見得是給XXX.XXX.XXX.XXX這種格式
有的甚至一次給3組IP,不然就是不給或是多一個逗號或是分號
又有情況是給proxyIP.而不是真實IP
正在傷腦筋的時候,又找到老外過濾這些的方法
當然依照proxy的設定還是有可能弄不到真實IP啦
按慣例我還是寫成Function
Public Shared Function GetClientIP() As String
Dim strIPAddr As String
If Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" Or InStr(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then
strIPAddr = Current.Request.ServerVariables("REMOTE_ADDR")
ElseIf InStr(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then
strIPAddr = Mid(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") - 1)
ElseIf InStr(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then
strIPAddr = Mid(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") - 1)
Else
strIPAddr = Current.Request.ServerVariables("HTTP_X_FORWARDED_FOR")
End If
Return Mid(strIPAddr, 1, 30).Trim
End Function
留言列表