close

工作上某些網站需要做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

arrow
arrow
    全站熱搜

    longlang0616 發表在 痞客邦 留言(0) 人氣()