主题:  如果判断一个数字(IP)是否在多个区间内?

yenan

职务:普通成员
等级:1
金币:0.0
发贴:82
#12006/2/8 10:08:58
想做一个根据访问者IP做跳转的功能,比如中国的IP就访问中文版,法国的就访问法语版,国外的就访问英文版.
我已经下载了一个IP区间表,现在就是不知道怎么实现判断来访者IP是属于哪个地区的IP区间,我写了一个简单的代码试了下,结果是无论IPNUM是多少都是执行 response.write""&sql&""
这个语句.肯请高手指点一下,我想了很多天都想不通.谢谢.
说明:我在ACCESS里建了一个表,里面有IPSTART和IPEND2项,作为区间.


<!--#include file="conn.asp"-->
<%
adminip = request.servervariables("remote_addr"
aip = split(adminip,"."
ipnum=aip(0)*16777216+ 65536*aip(1) + 256*aip(2) + aip(3)
response.write""&ipnum&""

set rs=server.createobject("ADODB.Recordset"
sql="select * from ipnumber where ipstart<'"&ipnum&"' and ipend>'"&ipnum&"' "
rs.open sql, conn, 1, 1
if not(rs.eof)then
response.write""&sql&""
//response.redirect"index.htm"
else
     response.write""&ipnum&""
        //response.redirect"index1.htm"
end if
rs.close
set rs=nothing
%>



缺缺

职务:管理员
等级:8
金币:41.0
发贴:9620
#22006/2/8 14:35:59
从你的逻辑来看,你实现的是
如果 数据库中有该IP
输出sql
如果数据库中没有该IP
输出ipnum

可能你的数据库很全面吧,把所有可能的IP都包含进去了,所以始终执行第一种情况

PS:ipstart是什么类型的字段呢?貌似不应该加单引号



yenan

职务:普通成员
等级:1
金币:0.0
发贴:82
#32006/2/8 17:03:11
没有,不是输出sql还是ipnum,这只是我调试用的,看显示的是那个就知道判断的结果,下面的response.redirect才是我要用的,如果该IP在区间内,页面转到index页,如果不是,就转到INDEX1页,从而实现根据IP来跳转到不同语言版本的网页.

ipstart和ipend都是数字.



yenan

职务:普通成员
等级:1
金币:0.0
发贴:82
#42006/2/8 17:12:24
多谢了,果然是你说的那个单引号的问题,改了之后就能顺利识别了.!!!!!太高兴了!!!