屋顶上的轻骑兵 发表于 2005 年 4 月 5 日 20:54:44

qplchen123,你要的代码我写完了

 qplchen123代码写完了,主要功能是对每一个IP限制每日访问次数为10次,超过10次就禁止访问。被禁止访问的IP第二天又会重新解封。

' 先建立一个数据庫,数据庫用什么类型的你自己看着办。
'PS:我这里使用的是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()        
      ifthisftime<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
      %>

一塌糊涂 发表于 2005 年 4 月 5 日 20:56:17

支持一下先

香小子 发表于 2005 年 4 月 5 日 20:58:48

哦.高手

esnak 发表于 2005 年 4 月 5 日 21:01:55

高人。。。。

翠花快出来看上帝。。。

qplchen123 发表于 2005 年 4 月 5 日 22:06:59

谢了~忠心的谢谢你

屋顶上的轻骑兵 发表于 2005 年 4 月 5 日 20:54:44

qplchen123,你要的代码我写完了

 qplchen123代码写完了,主要功能是对每一个IP限制每日访问次数为10次,超过10次就禁止访问。被禁止访问的IP第二天又会重新解封。

' 先建立一个数据庫,数据庫用什么类型的你自己看着办。
'PS:我这里使用的是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()        
      ifthisftime<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
      %>
页: [1]
查看完整版本: qplchen123,你要的代码我写完了