asp防止刷新功能实现代码
asp防止刷新功能实现代码
发布时间:2016-12-29 来源:查字典编辑
摘要:使用说明1.在要保护的页面顶部加如对AntiRefresh.asp文件的引用如:2.接着添加调用代码复制代码代码如下:其中要注意的是Cons...

使用说明

1.在要保护的页面顶部加如对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防止刷新

复制代码 代码如下:

Subchkreflash()

dimScriptName

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

dimposttime,DoReflashPage,ReflashPage,SplitReflashPage

posttime=1'防止刷新时间

DoReflashPage=false

ReflashPage="|Article_one.asp"

SplitReflashPage=split(ReflashPage,"|")

fori=0toubound(SplitReflashPage)

ifinstr(scriptname,SplitReflashPage(i))>0then

DoReflashPage=true

exitfor

endif

next

if(notisnull(session("ReflashTime")))andposttime>0andDoReflashPagethen

ifDateDiff("s",session("ReflashTime"),Now())<posttimethen

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

else

session("ReflashTime")=Now()

endif

elseifisnull(session("ReflashTime"))andposttime>0andDoReflashPagethen

Session("ReflashTime")=Now()

endif

EndSub

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新ASP教程学习
热门ASP教程学习
编程开发子分类