您正在使用 IPV4 [3.138.141.202] 访问本站,您本次已经查看了 1 页
用户名: 密 码: 验证码:     用QQ登录本站
首页 软件 编程 笑话 知识 公告 台风 日历 计算器
悟空收录网       [公益]保护绿色环境,构建和谐社会      

【腾讯云】 爆款2核2G3M云服务器首年 61元,叠加红包再享折上折      
[公益] 地球是我家,绿化靠大家      
2024年 劳动节 015
2024年 端午节 055
2025年 元 旦 260
2025年 春 节 288
 
您现在的位置:首页 >> ASP/ASP.net >> 内容
本类新增
本类热门
asp防止刷新功能实现代码
内容摘要: 使模块明1.在要保护的页面顶部加如对AntiRefresh.asp文件的引用如:!--#includevirtual='AntiRefresh.asp'--2.接着添加调用代码代码如下:%ConstVarNameDateArr='www_domai_net_App_DataArr'队列名称ConstVarNameIPArr='www_domai_net_Ap......
使模块明

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

<!--#includevirtual="AntiRefresh.asp"-->

2.接着添加调用代码

代码如下:

<%

ConstVarNameDateArr="www_domai_net_App_DataArr"队列名称

ConstVarNameIPArr="www_domai_net_App_IPArr"队列名称

DimobjAntiRefresh

SetobjAntiRefresh=newAntiRefresh

objAntiRefresh.BufferSize=100队列大小

objAntiRefresh.CacheItemAvailTime=2间隔时间

IfNotobjAntiRefresh.IsValidAccess()Then

SetobjAntiRefresh=Nothing

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

Response.End()

EndIf

SetobjAntiRefresh=Nothing

%>

其中要注意的是

ConstVarNameDateArr="www_domai_net_App_DataArr"队列名称

ConstVarNameIPArr="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个页面的ConstVarNameDateArr="xxx",ConstVarNameIPArr="xxx"不同,比方第一个也面你用xxxList,第个个页面用xxxSearch,

如:

ConstVarNameDateArr="www_domai_net_App_DataArr_Search"(_List)

ConstVarNameIPArr="www_domai_net_App_IPArr_Search"(_List)

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

下面是AntiRefresh.asp文件源码

代码如下:

<%

***************************************

*页面防刷新模块*

*WDFrog,2007-8-16

***************************************

ClassAntiRefresh

PrivateIPArr,DateArr

Privatem_BufferSize

Privatem_CacheItemAvailTime

PrivateSubClass_Initialize()

Application.Lock()

m_BufferSize=100

m_CacheItemAvailTime=2

EndSub

PrivateSubClass_Terminate()

Application.UnLock()

EndSub

PublicPropertyGetCacheItemAvailTime

CacheItemAvailTime=m_CacheItemAvailTime

EndProperty

PublicPropertyLetCacheItemAvailTime(Value)

m_CacheItemAvailTime=Value

EndProperty

PublicPropertyGetBufferSize

BufferSize=m_BufferSize

EndProperty

PublicPropertyLetBufferSize(Value)

m_BufferSize=Value

EndProperty

PrivateSubEnsureArr()

IfIsArray(Application(VarNameDateArr))Then

DateArr=Application(VarNameDateArr)

Else

ReDimDateArr(BufferSize)

EndIf

IfIsArray(Application(VarNameIPArr))Then

IPArr=Application(VarNameIPArr)

Else

ReDimIPArr(BufferSize)

EndIf

EndSub

PublicFunctionIsValidAccess()

Dimip,i

ip=GetIP()

IsValidAccess=True

EnsureArr()

Fori=1ToBufferSize

IfIPArr(i)=ipThen

IfDateDiff("s",CDate(DateArr(i)),Now())<CacheItemAvailTimeThen

IsValidAccess=False

ExitFunction

EndIf

EndIf

Next

CallQueueHandle()

DateArr(1)=Now()

IPArr(1)=ip

Application(VarNameIPArr)=IPArr

Application(VarNameDateArr)=DateArr

EndFunction

PublicFunctionClearCache()

SetApplication(VarNameDateArr)=Nothing

SetApplication(VarNameIPArr)=Nothing

EndFunction

PrivateSubQueueHandle()

Dimi,j

Fori=BufferSize-1To1Step-1

DateArr(i+1)=DateArr(i)

Next

Forj=BufferSize-1To1Step-1

IPArr(j+1)=IPArr(j)

Next

EndSub

PrivateFunctionGetIP()

DimstrIPAddr

IfRequest.ServerVariables("HTTP_X_FORWARDED_FOR")=""ORInStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),"unknown")>0Then

strIPAddr=Request.ServerVariables("REMOTE_ADDR")

ElseIfInStr(Request.ServerVariables("HTTP_X_FORWARDED_FOR"),",")>0Then

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

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

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")

EndIf

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

EndFunction

EndClass

%>

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,和刷新次数。\n\n请不要在"&posttime&"秒内连续刷新本页面!","-1")

else

session("ReflashTime")=Now()

endif

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

Session("ReflashTime")=Now()

endif

EndSub

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

版权声明:本内容来源于网络,如有侵犯您的版权,请联系站长,本站收到您的信息后将及时处理。
上一篇:ASP获取新增记录ID值的方法

 

下一篇:用FSO获得图片文件的信息(大小,宽,高)

发布日期:2022/12/15
手机扫二维码直达本页
发布时间:14:16:14
点  击:10
录  入:壹家怡园
相关文章
Baidu
YiJiaCMS 7.3.8 build231228(MSSQL) 闽ICP备05000814号-1
本空间由腾讯云(轻量应用服务器)提供,Cloudflare提供加速防护
运行时间载入中.....