asp防止刷新功能实现代码

使用说明

1.在要保护的页面顶部加如对AntiRefresh.asp文件的引用如:

<!--#include virtual="AntiRefresh.asp" -->

2.接着添加调用代码

复制代码 代码如下:

<%

Const VarNameDateArr="www_domai_net_App_DataArr" '队列名称

Const VarNameIPArr="www_domai_net_App_IPArr" '队列名称

Dim objAntiRefresh

Set objAntiRefresh= new AntiRefresh

objAntiRefresh.BufferSize=100 '队列大小

objAntiRefresh.CacheItemAvailTime=2 '间隔时间

If Not objAntiRefresh.IsValidAccess() Then

Set objAntiRefresh=Nothing

Response.Write("您的访问过去频繁请2秒后再试.")

Response.End()

End If

Set objAntiRefresh=Nothing

%>

其中要注意的是

Const VarNameDateArr="www_domai_net_App_DataArr" '队列名称

Const VarNameIPArr="www_domai_net_App_IPArr" '队列名称

比方你要在List.asp与search.asp中加入通一个防刷新器,那么你把上面的调用代码分别复制到这两个页面,或者保证两个页面的掉用代码一致。这样的效果是,你访问了List.asp页那么你在2秒内将不能访问List.asp或Search.asp页

如果你要2个页面独立,即你访问List.asp后,你会在2秒内不能再次访问List.asp,但是你可以访问Search.asp,反之毅然,那么你就要保证2个页面的 Const VarNameDateArr="xxx",Const VarNameIPArr="xxx"不同,比方第一个也面你用xxxList,第个个页面用xxxSearch,

如:

Const VarNameDateArr="www_domai_net_App_DataArr_Search" '(_List)

Const VarNameIPArr="www_domai_net_App_IPArr_Search" '(_List)

唠叨这些是给那么不太懂的朋友,以便他们能使用这些代码,如果你懂Asp那么以上的对你来说就很好理解了。

下面是AntiRefresh.asp文件源码

复制代码 代码如下:

<%

'***************************************

'* 页面防刷新模块 *

'* WDFrog,2007-8-16

'***************************************

Class AntiRefresh

Private IPArr,DateArr

Private m_BufferSize

Private m_CacheItemAvailTime

Private Sub Class_Initialize()

Application.Lock()

m_BufferSize=100

m_CacheItemAvailTime=2

End Sub

Private Sub Class_Terminate()

Application.UnLock()

End Sub

Public Property Get CacheItemAvailTime

CacheItemAvailTime=m_CacheItemAvailTime

End Property

Public Property Let CacheItemAvailTime(Value)

m_CacheItemAvailTime=Value

End Property

Public Property Get BufferSize

BufferSize=m_BufferSize

End Property

Public Property Let BufferSize(Value)

m_BufferSize=Value

End Property

Private Sub EnsureArr()

If IsArray(Application(VarNameDateArr)) Then

DateArr=Application(VarNameDateArr)

Else

ReDim DateArr(BufferSize)

End If

If IsArray(Application(VarNameIPArr)) Then

IPArr=Application(VarNameIPArr)

Else

ReDim IPArr(BufferSize)

End If

End Sub

Public Function IsValidAccess()

Dim ip,i

ip=GetIP()

IsValidAccess=True

EnsureArr()

For i=1 To BufferSize

If IPArr(i)=ip Then

If DateDiff("s",CDate(DateArr(i)),Now()) < CacheItemAvailTime Then

IsValidAccess=False

Exit Function

End If

End If

Next

Call QueueHandle()

DateArr(1)=Now()

IPArr(1)=ip

Application(VarNameIPArr)=IPArr

Application(VarNameDateArr)=DateArr

End Function

Public Function ClearCache()

Set Application(VarNameDateArr)=Nothing

Set Application(VarNameIPArr)=Nothing

End Function

Private Sub QueueHandle()

Dim i,j

For i=BufferSize-1 To 1 Step -1

DateArr(i+1)=DateArr(i)

Next

For j=BufferSize-1 To 1 Step -1

IPArr(j+1)=IPArr(j)

Next

End Sub

Private Function GetIP()

Dim strIPAddr

If Request.ServerVariables("HTTP_X_FORWARDED_FOR") = "" OR InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), "unknown") > 0 Then

strIPAddr = Request.ServerVariables("REMOTE_ADDR")

ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",") > 0 Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ",")-1)

ElseIf InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";") > 0 Then

strIPAddr = Mid(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), 1, InStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"), ";")-1)

Else

strIPAddr = Request.ServerVariables("HTTP_X_FORWARDED_FOR")

End If

GetIP = (Trim(Mid(strIPAddr, 1, 30)))

End Function

End Class

%>

asp防止刷新

复制代码 代码如下:

Sub chkreflash()

    dim ScriptName

    ScriptName=lcase(request.ServerVariables("PATH_INFO"))

    dim posttime,DoReflashPage,ReflashPage,SplitReflashPage

    posttime=1 '防止刷新时间

    DoReflashPage=false

    ReflashPage="|Article_one.asp"

    SplitReflashPage=split(ReflashPage,"|")

        for i=0 to ubound(SplitReflashPage)

             if instr(scriptname,SplitReflashPage(i))>0 then

                DoReflashPage=true

            exit for

             end if

        next

    if (not isnull(session("ReflashTime"))) and posttime>0 and DoReflashPage then

        if DateDiff("s",session("ReflashTime"),Now())<posttime then

            call msg("警告!系统已记录您的IP,和刷新次数。\n\n请不要在"&posttime&"秒内连续刷新本页面!","-1")

        else

        session("ReflashTime")=Now()

        end if

    elseif isnull(session("ReflashTime")) and posttime>0 and DoReflashPage then

        Session("ReflashTime")=Now()

    end if

End Sub

调用方法在页面首部加入chkreflash即可

时间: 2024-08-01 00:46:22

asp防止刷新功能实现代码的相关文章

asp.net 文件下载功能函数代码整理_实用技巧

复制代码 代码如下: public void FileDownLoadDel(string fullFilename) { System.IO.Stream iStream = null; // Buffer to read 10K bytes in chunk: byte[] buffer = new Byte[10000]; // Length of the file: int length; // Total bytes to read: long dataToRead; // Ident

ASP.NET中新的代码编译功能(三)

asp.net|编译 预编译支持 ASP.NET Web 窗体的优势之一就是增加动态编译后,您可以很轻松地更改 .aspx 页,保存更改时页面将动态更新,而不需要重新编译(只要不使用模块化代码).但动态编译并不是对每个应用程序都适合,而且第一次访问某个应用程序时,动态编译会导致浏览器的初始性能降低.另外,很多时候您可能希望部署一个没有源代码的应用程序.如果您遇到上述情况,您会更高兴地了解到 ASP.NET Whidbey 具有支持预编译 Web 站点的功能.ASP.NET Whidbey 支持两

asp 无刷新上传带预览程序代码

首先我是使用艾恩ASP无组件上传类的iframe.直接在框架里面上传后赋值给父窗口的input.下面就是index.php的代码了.但是这个这能上传一张图片不能批量上传图片!    单文件上传<br /> <iframe frameborder="0" height="60" width="400" name="upload" src="upload.asp"></iframe

ASP多条件查询功能实现代码(多关键词查询)_应用技巧

经过多次研究写出了如下代码,有需要的可以参考下 复制代码 代码如下: kd=server.HTMLEncode(request("keyword"))if kd<>"" then    kd=trim(kd)'kd=replace(kd," ","")  kd=replace(kd,"'","")  kd=replace(kd,"%","&quo

A利用ASP小偷和Google实现在线翻译功能的代码_应用技巧

复制代码 代码如下: 有时候想为我们的网页提供多语言支持,如果一种语言用一张网页来做实在太麻烦了,幸好Google提供了语言工具功能,下面介绍如何利用它来实现网页多种语言之间的转换. lan.htm <form> <select name="lan"> <option value="en|de">英语 翻译成 德语</option> <option value="en|es">英语 翻译

ASP强制刷新网页和判断文件地址实例代码

强制刷新网页 <% '强制性刷新随机验证码 '让随机验证码每次按IE的后退按钮时,返回登录页面的随即码都自动刷新, Response.expires=-1 Response.AddHeader"pragma","no-cache" Response.AddHeader"cache-control","no-store" %> 判断文件地址是否有效 <% Response.Write("")

django ajax提交评论并自动刷新功能的实现代码

在试了很多次了,终于搞定了,上代码吧.(我用的是jQuery的ajax,不是原生的) js代码: <script> $(document).ready(function () { getcomment(); $('.comment-box button').click(function () { var comment_text = $('.comment-box textarea').val(); $.ajax({ type: 'POST', url: '/bbs/article/{{ ar

ASP多条件查询功能实现代码(多关键词查询)

经过多次研究写出了如下代码,有需要的可以参考下 复制代码 代码如下:kd=server.HTMLEncode(request("keyword"))if kd<>"" then    kd=trim(kd)'kd=replace(kd," ","")  kd=replace(kd,"'","")  kd=replace(kd,"%",""

A利用ASP小偷和Google实现在线翻译功能的代码

复制代码 代码如下: 有时候想为我们的网页提供多语言支持,如果一种语言用一张网页来做实在太麻烦了,幸好Google提供了语言工具功能,下面介绍如何利用它来实现网页多种语言之间的转换. lan.htm <form> <select name="lan"> <option value="en|de">英语 翻译成 德语</option> <option value="en|es">英语 翻译