1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

[原创]IP地区自动跳转..技术交流..请大家多多指点

本帖由 皮条客2007-01-17 发布。版面名称:新人报道

  1. 皮条客

    皮条客 New Member

    注册:
    2006-08-13
    帖子:
    120
    赞:
    1
    1、基本原理:
    即访问首页时首先通过Request.ServerVariables("REMOTE_ADDR")或Request.ServerVariables("HTTP_X_FORWARDED_FOR")获得访问者所在地的IP地址,然后通过以下函数把IP地址转换成长整型:
    Function CLngIP(ByVal asNewIP)
    Dim lnResults
    Dim lnIndex
    Dim lnIpAry
    lnIpAry = Split(asNewIP, ".", 4)
    For lnIndex = 0 To 3
    If Not lnIndex = 3 Then
    lnIpAry(lnIndex) = lnIpAry(lnIndex) * (256 ^ (3 - lnIndex))
    End If
    lnResults = lnResults + lnIpAry(lnIndex)
    Next
    CLngIP = lnResults
    End Function
    然后通过与IP库中的IP长整型值大小对比,是否在某个IP段内,然后读出对应的URL值或CityID值,这时即获得了该地区对应的目录或CityID值,然后通过程序让其跳转到此目录或CityID值即完成自动跳转功能。

    2、IP库来源:
    IP库取自纯真060610版,共计26万余IP记录,除去国外IP记录,国内(包括港澳台共21万条记录)。每个省市区默认设置好了对应的目录,除香港以全拼命外其它是以各省市区省会名拼音第一个字母命名,默认CityID均为零,即没有启用CityID自动跳转。为减小库的体积删去了country、city字段。

    3、#IP.mdb库默认支持的跳转区域:
    目前共包括,4个直辖市,27个省及港台三二地区的IP自动跳转。
    为方便大家设置区域的IP跳转,另外提供的库IP_bak.mdb文件中包括按省、直辖市级分好的表,包括4个直辖市,27个省及港台三二地区。若要更改相应目录名或CityID等更改设置可通过以下提供的方法进行设置后,将各表合并为xin35_IP一个表,删除其它表即可。为减小库的体积,设置完后,建议删除country、city字段。



    这种方式大家觉得有什么补充的嘛..?多多交流
     
  2. jewenyoung

    jewenyoung New Member

    注册:
    2006-12-02
    帖子:
    40
    赞:
    0
    一会实验下 谢谢楼主了

    能提供一下论坛 头像 显示 ip 操作系统 之类 东西的 代码么?
     
  3. Function

    Function New Member

    注册:
    2006-03-24
    帖子:
    3,884
    赞:
    5
    我也是这么实现的,只是那个 IP 库啊,一直找不到理想的。