全国性网站如何自动定位城市

1、全国性的网站如何自动定位城市,并跳转到相应的城市网站呢?

网友访问网站先检查cookie,如果cookie有记录,则转向cookie对应的分站;

如果第一次访问网站则检查访问者的ip所对应的城市,如果查询到自动转向对应的分站并将网址写入到cookie;

如果没有查到,则转到城市选择的页面。比如 访问者是北京,则自动跳转到 bj.abc.com



首先下载最新版的动网(DVBBS)IP数据库
http://bbs.dvbbs.net/dispbbs.asp?BoardID=13&ID=1527565&replyID=&skin=1&jdfwkey=46178

注意,我下面说的只是方法,你可以根据自己的情况自己修改
运算将真实IP转换为数字,比如北京的IP段是 : 1.1.0.0 — 1.1.0.255

Startip: 1*256*256*256+1*256*256+0*256+0 = 16842752 (这个数字才是最终要放到数据库里)


Endip: 1*256*256*256+1*256*256+0*256+255 = 16843007 (这个数字才是最终要放到数据库里的)

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 dv_address where ip1<="&tmp_userip&" and Endip>="&tmp_userip
rs.open sql,conn,1,1
if rs.eof then
response.redirect “index.asp” ’如果没有该城市或是IP无法识别则转到首页,也可以指定页面
else
response.redirect rs(”webUrl”) ’如果有转到指定页面webUrl字段自己添加
end if
rs.close
set rs=nothing

---------------------------------
不过根据城市来判断的话,IP段数量太多了,我查了一下青岛,就有2000多条了,我把相连的IP段都放到一起,最后只剩147条了,我是把ip段都写到ASP数组了。
如下:

cityip.asp

程序代码

sql="select * from dv_address where country like '%青岛%'"
rs.open sql,conn,3,1
i=0
ip1=0
ip2=0
do while not rs.eof
ip1=rs("ip1")
if ip1=ip2+1 then
ip2=rs("ip2")
elseif ip2=0 then
ip2=rs("ip2")
response.Write "city("&i&",0)="&ip1&"<br />"
'response.Write ip1&"-"
else
response.Write "city("&i&",1)="&ip2&"<br />"
response.Write "city("&i&",2)=""/qingdao/""<br /><br />"
'response.Write ip2&"<br />"
i=i+1
ip2=rs("ip2")
response.Write "city("&i&",0)="&ip1&"<br />"
'response.Write ip1&"-"

end if
rs.movenext
loop
rs.close
set rs=nothing
response.Write "city("&i&",1)="&ip2&"<br />"
response.Write "city("&i&",2)=""/qingdao/"""'用它指向相对应网址
'response.Write ip2
response.Write "<p>"&i&"</p>"





下面是调用的方法:
default.asp

程序代码

'获取IP计算
user_ip="201.0.131.202"
userip_ary=split(user_ip,".")'IP分离成数组
tmp_userip=userip_ary(0)*256*256*256+userip_ary(1)*256*256+userip_ary(2)*256+userip_ary(3) ' 按规定转换IP为数字
for i=0 to city_num'city_num是上面数组的总数量,自己要定义一下
if tmp_userip>=CSng(city(i,0)) and tmp_userip<=CSng(city(i,1)) then
response.Redirect city(i,2)
exit for
end if
next
'如果没有跳转
response.Write "未识别"



原文地址:http://www.corange.cn/archives/2008/12/2781.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值