找回密码
 注册
【阿里云】2核2G云新老同享 99元/年,续费同价华为云精选云产品特惠做网站就用糖果主机Jtti,新加坡服务器,美国服务器,香港服务器
查看: 631|回复: 5

qplchen123,你要的代码我写完了

[复制链接]
发表于 2005 年 4 月 5 日 20:54:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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

' 先建立一个数据庫,数据庫用什么类型的你自己看着办。
&#39S:我这里使用的是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
              %>
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
发表于 2005 年 4 月 5 日 20:56:17 | 显示全部楼层
【腾讯云】2核2G云服务器新老同享 99元/年,续费同价
支持一下先
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2005 年 4 月 5 日 20:58:48 | 显示全部楼层
哦.高手
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2005 年 4 月 5 日 21:01:55 | 显示全部楼层
高人。。。。

翠花快出来看上帝。。。
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

发表于 2005 年 4 月 5 日 22:06:59 | 显示全部楼层
谢了~忠心的谢谢你
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

 楼主| 发表于 2005 年 4 月 5 日 20:54:44 | 显示全部楼层

qplchen123,你要的代码我写完了

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

' 先建立一个数据庫,数据庫用什么类型的你自己看着办。
&#39S:我这里使用的是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
              %>
Jgwy.Com - Free Web Hosting Guide & Directory In China since 2001! Jgwy.Net-Jglt.Net
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|金光论坛

GMT+8, 2024 年 11 月 19 日 05:51 , Processed in 0.116774 second(s), 22 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表