asp防止刷新功能實(shí)現(xiàn)代碼
1.在要保護(hù)的頁(yè)面頂部加如對(duì)AntiRefresh.asp文件的引用如:
<!--#include virtual="AntiRefresh.asp" -->
2.接著添加調(diào)用代碼
<%
Const VarNameDateArr="www_domai_net_App_DataArr" '隊(duì)列名稱(chēng)
Const VarNameIPArr="www_domai_net_App_IPArr" '隊(duì)列名稱(chēng)
Dim objAntiRefresh
Set objAntiRefresh= new AntiRefresh
objAntiRefresh.BufferSize=100 '隊(duì)列大小
objAntiRefresh.CacheItemAvailTime=2 '間隔時(shí)間
If Not objAntiRefresh.IsValidAccess() Then
Set objAntiRefresh=Nothing
Response.Write("您的訪問(wèn)過(guò)去頻繁請(qǐng)2秒后再試.")
Response.End()
End If
Set objAntiRefresh=Nothing
%>
其中要注意的是
Const VarNameDateArr="www_domai_net_App_DataArr" '隊(duì)列名稱(chēng)
Const VarNameIPArr="www_domai_net_App_IPArr" '隊(duì)列名稱(chēng)
比方你要在List.asp與search.asp中加入通一個(gè)防刷新器,那么你把上面的調(diào)用代碼分別復(fù)制到這兩個(gè)頁(yè)面,或者保證兩個(gè)頁(yè)面的掉用代碼一致。這樣的效果是,你訪問(wèn)了List.asp頁(yè)那么你在2秒內(nèi)將不能訪問(wèn)List.asp或Search.asp頁(yè)
如果你要2個(gè)頁(yè)面獨(dú)立,即你訪問(wèn)List.asp后,你會(huì)在2秒內(nèi)不能再次訪問(wèn)List.asp,但是你可以訪問(wèn)Search.asp,反之毅然,那么你就要保證2個(gè)頁(yè)面的 Const VarNameDateArr="xxx",Const VarNameIPArr="xxx"不同,比方第一個(gè)也面你用xxxList,第個(gè)個(gè)頁(yè)面用xxxSearch,
如:
Const VarNameDateArr="www_domai_net_App_DataArr_Search" '(_List)
Const VarNameIPArr="www_domai_net_App_IPArr_Search" '(_List)
嘮叨這些是給那么不太懂的朋友,以便他們能使用這些代碼,如果你懂Asp那么以上的對(duì)你來(lái)說(shuō)就很好理解了。
下面是AntiRefresh.asp文件源碼
<%
'***************************************
'* 頁(yè)面防刷新模塊 *
'* 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 '防止刷新時(shí)間
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("警告!系統(tǒng)已記錄您的IP,和刷新次數(shù)。\n\n請(qǐng)不要在"&posttime&"秒內(nèi)連續(xù)刷新本頁(yè)面!","-1")
else
session("ReflashTime")=Now()
end if
elseif isnull(session("ReflashTime")) and posttime>0 and DoReflashPage then
Session("ReflashTime")=Now()
end if
End Sub
調(diào)用方法在頁(yè)面首部加入chkreflash即可
- ASP.Net防止刷新自動(dòng)觸發(fā)事件的解決方案
- 用Asp如何實(shí)現(xiàn)防止網(wǎng)頁(yè)頻繁刷新?
- ASP.Net中防止刷新自動(dòng)觸發(fā)事件的解決方案
- asp.net防止刷新時(shí)重復(fù)提交(可禁用工具條刷新按鈕)
- Asp.Net防止刷新重復(fù)提交數(shù)據(jù)的辦法
- ASP.NET防止頁(yè)面刷新的兩種解決方法小結(jié)
- php環(huán)境下利用session防止頁(yè)面重復(fù)刷新的具體實(shí)現(xiàn)
- php防止網(wǎng)站被刷新的方法匯總
- PHP防止刷新重復(fù)提交頁(yè)面的示例代碼
- php采用session實(shí)現(xiàn)防止頁(yè)面重復(fù)刷新
- ASP.NET中防止頁(yè)面刷新造成表單重復(fù)提交執(zhí)行兩次操作
相關(guān)文章
asp操作access提示無(wú)法從指定的數(shù)據(jù)表中刪除原因分析及解決
asp操作access時(shí)提示無(wú)法從指定的數(shù)據(jù)表中刪除這個(gè)問(wèn)題相當(dāng)?shù)募郑谑撬阉髡砹艘恍?shí)用的解決方法,感興趣的你可以參考下本文2013-03-03asp中獲取內(nèi)容中所有圖片與獲取內(nèi)容中第一個(gè)圖片的代碼
用asp獲取內(nèi)容中的圖片與獲取內(nèi)容中的第一個(gè)圖片地址,主要是cms中保存內(nèi)容中的圖片需要用得到,使用的是正則的方法。2011-01-01asp短信接口源碼 比較簡(jiǎn)單但也挺實(shí)用用的(兩個(gè)寫(xiě)法)
這是關(guān)于短信接口的一些調(diào)用方法,asp的,兩個(gè)方式,調(diào)用短信接口都比較簡(jiǎn)單,但也比較實(shí)用2012-01-01ImageMagickObject獲取圖片的信息無(wú)返回值的解決辦法
這篇文章主要介紹了ImageMagickObject獲取圖片的信息無(wú)返回值的解決辦法,非常簡(jiǎn)單,加上format參數(shù)即可,需要的朋友可以參考下2015-05-05從文本文件中讀取信息并存儲(chǔ)入數(shù)據(jù)庫(kù)
從文本文件中讀取信息并存儲(chǔ)入數(shù)據(jù)庫(kù)...2006-12-12asp實(shí)現(xiàn)限制一個(gè)ip只能訪問(wèn)一次的方法
這篇文章主要介紹了asp實(shí)現(xiàn)限制一個(gè)ip只能訪問(wèn)一次的方法,感興趣的小伙伴們可以參考一下2015-10-10ASP 三層架構(gòu) Convert類(lèi)實(shí)現(xiàn)代碼
第二個(gè)重要的類(lèi),作用是類(lèi)型轉(zhuǎn)換,類(lèi)名Con_Convert.在頁(yè)面代碼的開(kāi)頭實(shí)例化,對(duì)象名為Convert,借用了.net的類(lèi)型轉(zhuǎn)換的對(duì)象名稱(chēng).2009-09-09關(guān)于無(wú)限分級(jí)(ASP+數(shù)據(jù)庫(kù)+JS)的實(shí)現(xiàn)代碼
關(guān)于無(wú)限分級(jí)(ASP+數(shù)據(jù)庫(kù)+JS)的實(shí)現(xiàn)代碼...2007-05-05