Задайте вопросЗадайте вопрос
 

Отвечено如何实现基于ip段的判断

Ответы

  • 16 декабря 2008 г. 8:33笨笨ONEMVP, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     Отвечено

    复制别人实现的代码,人家是城市的,换成国家也是一样的。

    1、数据库的连接文件一般的程序中都有(conn.asp 文件),我在这里就不写了。

    2、以下代码主要实现 “判断ip地址后跳转到相应页面” 也就是说根据用户的IP判断他所在的地区,转向相应的地区级页面;并不是为了 “禁用某个IP段的用户访问” 而设计的所以没用必要判断 用户是否加了代理等等。


    '以下是数据库部分

    1、建个名为表 IP 的表
    2、在在此表中建 5 个字段。
    ID : 编号 类型 :自动编号
    IP1:相关城市的IP段信息。 类型: 数字 ac需要(双精度)
    IP2:相关城市的IP段信息。 类型: 数字 ac需要(双精度)
    URL:跳转的页面URL 类型:TXT
    city:相关城市 类型:TXT

    列:

    比如北京的IP段是 : 1.1.0.0 -- 1.1.0.255

    ip1: 1*256*256*256+1*256*256+0*256+0 = 16842752

    ip2: 1*256*256*256+1*256*256+0*256+255 = 16843007


    ID IP1 IP2 URL city

    1 16842752 16843007 http://BJ.58.COM 北京

    '以下是程序部分

    Copy code
    user_ip = Request.ServerVariables("REMOTE_ADDR")   '取得访问者IP
    userip_ary=split(user_ip,".")
    tmp_userip=userip_ary(0)*256*256*256+userip_ary(1)*256*256+userip_ary(2)*256+userip_ary(3) ' 按规定转换IP为数字

    ‘从数据库找出用户IP属于的城市
    set rs=Server.CreateObject("ADODB.Recordset")
    sql="select * from ip where ip1<="&tmp_userip&" and ip2>="&tmp_userip    
    rs.open sql,conn,1,1
    if rs.eof then
    response.redirect "index.asp"   ’如果没有转到 首页 ,也可以指定页面
    else
    response.redirect rs("url")       ’如果有转到指定页面
    end if
    rs.close
    set rs=nothin
    • Помечено в качестве ответаViewFelicity 26 февраля 2009 г. 9:39
    •  

Все ответы

  • 15 декабря 2008 г. 8:38韦恩卑鄙 v-zhewg Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     

    更简单的办法是判断 浏览器 user_agent的语言 

  • 16 декабря 2008 г. 3:12James.Ying Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     

     

    一般我会用ip库,你可以用外面现有的,大概是dat文件吧,只要判断是否是日本的ip段,然后其他默认转到中文就好了,应该不是很难
  • 16 декабря 2008 г. 5:08孟宪会MVP, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     
    你可以到网上找一下ip端的数据库
    或者
    找ip与数字相互转换的函数
  • 16 декабря 2008 г. 8:33笨笨ONEMVP, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     Отвечено

    复制别人实现的代码,人家是城市的,换成国家也是一样的。

    1、数据库的连接文件一般的程序中都有(conn.asp 文件),我在这里就不写了。

    2、以下代码主要实现 “判断ip地址后跳转到相应页面” 也就是说根据用户的IP判断他所在的地区,转向相应的地区级页面;并不是为了 “禁用某个IP段的用户访问” 而设计的所以没用必要判断 用户是否加了代理等等。


    '以下是数据库部分

    1、建个名为表 IP 的表
    2、在在此表中建 5 个字段。
    ID : 编号 类型 :自动编号
    IP1:相关城市的IP段信息。 类型: 数字 ac需要(双精度)
    IP2:相关城市的IP段信息。 类型: 数字 ac需要(双精度)
    URL:跳转的页面URL 类型:TXT
    city:相关城市 类型:TXT

    列:

    比如北京的IP段是 : 1.1.0.0 -- 1.1.0.255

    ip1: 1*256*256*256+1*256*256+0*256+0 = 16842752

    ip2: 1*256*256*256+1*256*256+0*256+255 = 16843007


    ID IP1 IP2 URL city

    1 16842752 16843007 http://BJ.58.COM 北京

    '以下是程序部分

    Copy code
    user_ip = Request.ServerVariables("REMOTE_ADDR")   '取得访问者IP
    userip_ary=split(user_ip,".")
    tmp_userip=userip_ary(0)*256*256*256+userip_ary(1)*256*256+userip_ary(2)*256+userip_ary(3) ' 按规定转换IP为数字

    ‘从数据库找出用户IP属于的城市
    set rs=Server.CreateObject("ADODB.Recordset")
    sql="select * from ip where ip1<="&tmp_userip&" and ip2>="&tmp_userip    
    rs.open sql,conn,1,1
    if rs.eof then
    response.redirect "index.asp"   ’如果没有转到 首页 ,也可以指定页面
    else
    response.redirect rs("url")       ’如果有转到指定页面
    end if
    rs.close
    set rs=nothin
    • Помечено в качестве ответаViewFelicity 26 февраля 2009 г. 9:39
    •  
  • 16 декабря 2008 г. 14:54GreatDinosaur Медали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     

    基本同笨笨ONE 的办法,千万不要用哪个dat的库,性能不行,楼主可以参考GeoIP.  他的数据库比较准

    http://www.maxmind.com/

     

    用它免费版的库,直接下载一个大的access导入到SQL中。one的方法基本没问题,有一点geoip他的数据库里ip就是ip的32位二进制换算整数值,直接使用IPAddress类对比即可,不用算。

     

    首先把整个数据库,大概也只有几万条记录,放在一个dataset里面,然后再把dataset放在一个cache["ip"]里面,使用where查询这个dataset,完全在内存中操作,性能很好,MVC的话可以写成一个filter。

  • 17 декабря 2008 г. 0:40孟宪会MVP, МодераторМедали пользователяМедали пользователяМедали пользователяМедали пользователяМедали пользователя
     
    一般的做法不是根据IP来路进行判断的,是根据客户端的地区语言判断的。就是说,你不要将在日本境内的中国人显示成日文内容

    String[] userLang = Request.UserLanguages; 
    或者从Request.UserAgent属性或者
    Request.ServerVariables 属性 得到语言信息