注册 登录
编程论坛 ASP技术论坛

帮忙看看代码!

wyjx 发布于 2008-07-05 12:46, 762 次点击
程序代码:
Function IP()
        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)
            actforip=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)
            actforip=Request.ServerVariables("REMOTE_ADDR")
        Else
            strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
            actforip=Request.ServerVariables("REMOTE_ADDR")
        End If
        IP = Trim(Mid(strIPAddr, 1, 30))
End Function

这能不能简略一些代码?
我有一个IP数据库,用什么代码来得转换IP到相应的页面?
数据库字段有  Startip   Endip  country  ReUrl 四个字段
2 回复
#2
multiple19022008-07-05 13:02
这个代码似乎相当完整。
我用的是这个代码:
程序代码:

Function IP
    IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
    If IP = "" Then IP = Request.ServerVariables("REMOTE_ADDR")
End Function


首先将得到的点分十进制IP转换为十进制IP,就是把点分十进制IP看做一个256进制数,转换为10进制,结果是Long型。
然后用SQL语句查询出StartIP<=IP<=EndIP的记录,跳转到ReUrl字段的内容。

[[it] 本帖最后由 multiple1902 于 2008-7-5 17:11 编辑 [/it]]
#3
hmhz2008-07-05 13:52
Request.ServerVariables("HTTP_X_FORWARDED_FOR") 是获取代理IP
Request.ServerVariables("REMOTE_ADDR") 是获取原始IP

当代理IP为空时就获取原始IP,以原始IP为主
当代理IP不为空时就获取代理IP,以代理IP为主

我也是这样写的
楼主的代码过于复杂化了
1