您的位置:绿色软件网站建设 -> Html/Css在自己的网站上实现追捕
在自己的网站上实现追捕
发布于:2007-2-19 14:43:43来源:不详阅读次数:TAG列表:暂时还没有tag

毕业了,做一个网上同学录是方便同学以后经常联络的好方法。这种小型项目用ASP写当然最合适啦!同学们可以在这里登记、更新每个人自己的信息。然而用过一段时间以后,我突然觉得有些美中不足:要是同学在访问网站时,网页会自动显示他所在实际地址(比如北京XX大学),那不就更完美了?

一、程序说明
我们先做一些准备工作。首先把“追捕”软件中的wry.dll文件改名为wry.dbf (其实这DLL扩展名只是一个掩护),接着利用Access把wry.dbf转换为IP.MDB,并且修改IP.MDB中的表的名字为IP。打开IP表看了一下(如图),faint!这一刻我才知道做一个程序员的艰辛(幸亏我不是^_^)!IP表一共有五个字段,分别是:STARTIP(起始IP地址)、ENDIP(结束IP 地址)、COUNTRY(网段所在的国家或省份)、LOCAL(大概就是说详细点的地方吧)以及THANK(也许就是给他提供这个信息的人吧),一共一万多条记录。
现在看看我们可以怎样使用这些数据。考虑到STARTIP和ENDIP显示的格式是061.188.000.000、061.188.255.255,我就想先将登录者的IP地址的前两位转化为000.000.的格式,比如假设来访IP 地址是61.188.88.66,我就将其转化为061.188.88.66。因为现在大家接触的一般都是B类或C类的网络,很少处于A类的网段,所以我对前两位使用字符串比较,也是符合常规且节省时间的。接着,查询数据库中前8位字符是061.188.的记录,当发现记录存在时,再取出IP地址中的“88”,同时也将STARTIP和ENDIP中的第9 到11 的三个字符取出,如果88 在两个数的中间,再取出IP 地址中的“66”进行进一步的查询。基本思路就是这些,很简单吧?

二、程序代码
下面就是所有的ASP 源代码,参考注释应该很好理解,你可以新建一个INDEX.ASP并且输入下面的源代码:
<html>
<body>
<%
' 得到请求的IP 地址
ip=Request.ServerVariables("REMOTE_HOST")
dim str1, str2
'ip处理部分
dim i, j
dim data, data1, data2
i=instr(1,ip,".") '如果前面不足三位,在前补0
if i<>4 then
for j=1 to (4-i)
ip="0" & ip
next
end if
' 这时前面已经有三位字符了,所以可以从第五位开始计算小数点的位置
i=instr(5,ip,".")
'如果少了位数再添加0,最终达到XXX.XXX.的形式
if i<>8 then
data1=left(ip,4)
data2=right(ip,len(ip)-4)
for j=1 to (8-i)'用差的位数来决定添加多少0
data1=data1 & "0"
next
ip=data1 & data2
end if
' 到目前为止,格式已经转换为与数据库相同的格式了
'用文件方式连接数据库
set dbcon=server.CreateObject("adodb.connection")
dbpath=server.MapPath("ip.mdb")
dbcon.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & dbpath
set rs=server.CreateObject("adodb.recordset")
rs.Open "ip",dbcon,1,1 'IP是包含地址数据的表
do while not rs.EOF
start=rs("STARTIP")
endip=rs("ENDIP")
str1=cstr(left(start,8)) ' 在数据库中的前8 位
str2=cstr(left(ip,8)) ' 请求的IP地址的前三个值
i=strcomp(str1,str2)
data1=int(mid(ip,13,len(ip)-12)) 'data1的值是采取到的IP地址的最后三位(也许是少于三位)的值

复制地址发给您的朋友阅读!

查看更多评论

100分 85分 70分 55分 40分 25分 10分 0分 用户名字: