|
楼主 |
发表于 2005 年 4 月 5 日 20:54:44
|
显示全部楼层
qplchen123,你要的代码我写完了
qplchen123代码写完了,主要功能是对每一个IP限制每日访问次数为10次,超过10次就禁止访问。被禁止访问的IP第二天又会重新解封。
' 先建立一个数据庫,数据庫用什么类型的你自己看着办。
'S:我这里使用的是access数据庫,你可以根据需要替换成sql server的数据庫
'数据庫结构 userip(只有一张表uip) 包括四个字段
' userip 记录访问者的IP 文本型15字节(设为主銉,不允许重复)
' visit 记录访问次数 长整型 默认值0
' forbid 是否禁止访问 长整型 默认值 0
' ftime 记录被禁时间 日期型 默认值为当前日期
' 最后记得把数据庫在ODBC里面DSN一下,数据源名设为userip
'下面是代码:
<!--#INCLUDE file="ADOVBS.INC"-->
<% dim vsip
vsip=request.ServerVariables("REMOTE_ADDR") '记录访问者IP
mydsn="DSN=userip"
set conn=server.CreateObject("ADODB.connection")
conn.open mydsn
sqlstmt="SELECT visit,forbid,ftime FROM uip Where userip=vsip"
set rs=conn.execute(sqlstmt)
'假如没有查询到有此IP的记录,则往数据庫中添加新的记录
if rs.eof then
set rs=nothing
sqlstmt1="INSERT INTO uip( userip) VALUES(vsip)"
set rs=conn.execute(sqlstmt1)
set rs=nothing
else
thisvisit=rs(1)
thisforbid=rs(2)
thisftime=rs(3)
set rs=nothing
if thisforbid=1 then
ntime=Date()
if thisftime<ntime then
'如果封IP时间已经超过一天,就解封
thisvisit=0
thisforbid=0
thisftime=Date()
else
response.Write("你的IP已经超过本日访问次数的限制")
endif
else
thisvisit=thisvisit+1
if thisvisit>=10 then
thisforbid=1
thisftime=ntime
endif
endif
sqlstmt2="UPDATE uip set visit=thisvisit,forbid=thisforbid,"
sqlstmt2=sqlstmt2&"ftime=thisftime where userip=vsip"
set rs=conn.execute(sqlstmt2)
set rs=nothing
Conn.colse
set coonn=nothing
if thisforbid=1 then
response.Redirect(url)
'转到允许访问者访问的地址
else
response.Redirect(url)
'转到不允许访问者访问的地址
endif
endif
%> |
|