



下載本文檔
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 本文介紹在ASP應(yīng)用中防止用戶在當(dāng)前會(huì)話期間多次提交同一表單的一個(gè)簡(jiǎn)單方法。它主要由四個(gè)子程序組成,在較為簡(jiǎn)單的應(yīng)用場(chǎng)合,你只要將這些代碼放在包含文件中直接引用即可;對(duì)于那些較為復(fù)雜的環(huán)境,我們?cè)谖恼碌淖詈蠼o出一些改進(jìn)建議。 一、基本工作過(guò)程 下面我們依次討論這四個(gè)子程序。 (一)初始化 這里我們要在Session對(duì)象中保存兩個(gè)變量,其中: 每一個(gè)表單對(duì)應(yīng)一個(gè)稱為FID的唯一標(biāo)識(shí),為使該值唯一要用到一個(gè)計(jì)數(shù)器。 每當(dāng)一個(gè)表單成功提交,必須在一個(gè)Dictionary對(duì)象中存儲(chǔ)它的FID。 我們用一個(gè)專用的過(guò)程來(lái)初始化上述數(shù)據(jù)。雖然以后各個(gè)子程序都要
2、調(diào)用它,但實(shí)際上每一個(gè)會(huì)話期間它只執(zhí)行一次: Sub InitializeFID() If Not IsObject(Session("FIDList") Then Set Session("FIDList")=Server.CreateObject("Scripting.Dictionary") Session("FID")=0 End If End Sub (二)生成表單的唯一標(biāo)識(shí)符 下面這個(gè)函數(shù)GenerateFID()用于生成表單的唯一標(biāo)志。該函數(shù)首先將FID值加1,然后返回它: Function Gene
3、rateFID() InitializeFID Session("FID") = Session("FID") + 1 GenerateFID = Session("FID") End Function (三)登記已提交表單 當(dāng)表單成功地提交時(shí),在Dictionary對(duì)象中登記它的唯一標(biāo)識(shí): Sub RegisterFID() Dim strFID InitializeFID strFID = Request("FID") Session("FIDlist").Add strFID, now()
4、 End Sub (四)檢查表單是否重復(fù)提交 在正式處理用戶提交的表單之前,應(yīng)該在Dictionary對(duì)象中檢查它的FID是否已經(jīng)登記。下面的CheckFID()函數(shù)用來(lái)完成這個(gè)工作,如已經(jīng)登記,它返回FALSE,否則返回TRUE: Function CheckFID() Dim strFID InitializeFID strFID = Request("FID") CheckFID = not Session("FIDlist").Exists(strFID) End Function 二、如何使用 有兩個(gè)地方要用到上述函數(shù),即表單生成時(shí)與結(jié)果處理時(shí)
5、。假設(shè)上述四個(gè)子程序已經(jīng)放入包含文件Forms.inc中,下面的代碼根據(jù)FID值來(lái)決定生成表單還是處理表單結(jié)果,它所描述的處理過(guò)程適合于大多數(shù)ASP應(yīng)用: %Option Explicit% !-#include file="forms.inc"- HTML HEAD TITLE表單提交測(cè)試 /TITLE /HEAD BODY % If Request("FID") = "" Then GenerateForm Else ProcessForm End If % /BODY /HTML GenerateForm負(fù)責(zé)生成表單,表單中應(yīng)該
6、含有一個(gè)隱藏的FID,如: % Sub GenerateForm() % form action=" %=Request.ServerVariables("PATH_INFO")%" method=GET input type=hidden name=FID value=" %=GenerateFID()%" input type=text name="param1" value="" input type=submit value="OK" /form % End Sub
7、% ProcessForm負(fù)責(zé)處理通過(guò)表單提交的內(nèi)容,但在處理之前應(yīng)該先調(diào)用CheckFID()檢查當(dāng)前表單是否已經(jīng)提交,代碼類如: % Sub ProcessForm() If CheckFID() Then Response.Write "你輸入的內(nèi)容是" & Request.QueryString("param1") RegisterFID Else Response.Write "此表單只能提交一次!" End If End Sub % 三、限制與改進(jìn)措施 上面我們介紹了在當(dāng)前會(huì)話期間限制同一表單被多次提交的一種方法。在實(shí)際應(yīng)用中可能需要從多方面加以改進(jìn),例如: 在登記表單ID之前檢查用戶輸入數(shù)據(jù)的合法性,使得數(shù)據(jù)不合法時(shí)用戶可以按“后退”按鈕返回,在修正后再次提交同一表單。 這種對(duì)表單提交的限制最多只能在當(dāng)前會(huì)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- DB14-T 3358-2025 農(nóng)作物認(rèn)定品種試驗(yàn)技術(shù)通則 蔬菜作物
- DB14-T 1467-2025 果園起壟覆膜集雨保墑技術(shù)規(guī)程
- 第33講 概率 2025年中考一輪數(shù)學(xué)專題復(fù)習(xí)課件(湖南)
- 汽車配件批發(fā)與零售區(qū)域承包合同
- 發(fā)型師個(gè)人品牌維權(quán)與侵權(quán)糾紛解決合同
- 綠色建筑設(shè)計(jì)與施工補(bǔ)充合同范本
- 汽車零部件進(jìn)出口:北美市場(chǎng)外貿(mào)銷售合同規(guī)范文本
- 2025年多媒體技術(shù)應(yīng)用考試試卷及答案
- 2025年法醫(yī)科學(xué)專業(yè)資格考試題及答案
- 2025年兒童心理健康與教育發(fā)展研究生入學(xué)考試試卷及答案
- 江西省2024年中考數(shù)學(xué)試卷【附真題答案】
- 《中醫(yī)適宜技術(shù)》期末考試復(fù)習(xí)題庫(kù)(含答案)
- 車位包銷合同
- 2024年陜西省西安市中考數(shù)學(xué)試題卷(含答案逐題解析)
- 24春國(guó)家開(kāi)放大學(xué)《土地資源學(xué)》形考作業(yè)1-4參考答案
- 電梯突發(fā)事件應(yīng)急演練
- 人教版八年級(jí)數(shù)學(xué)下冊(cè)期末試卷培優(yōu)測(cè)試卷
- (2024年)肺栓塞的護(hù)理課件
- 刑事書(shū)記員培訓(xùn)課件
- 西餐廳籌備計(jì)劃書(shū)
- 故事繪本彼得兔的故事
評(píng)論
0/150
提交評(píng)論