



下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 本文介紹在ASP應(yīng)用中防止用戶在當(dāng)前會(huì)話期間多次提交同一表單的一個(gè)簡單方法。它主要由四個(gè)子程序組成,在較為簡單的應(yīng)用場合,你只要將這些代碼放在包含文件中直接引用即可;對于那些較為復(fù)雜的環(huán)境,我們在文章的最后給出一些改進(jìn)建議。 一、基本工作過程 下面我們依次討論這四個(gè)子程序。 (一)初始化 這里我們要在Session對象中保存兩個(gè)變量,其中: 每一個(gè)表單對應(yīng)一個(gè)稱為FID的唯一標(biāo)識(shí),為使該值唯一要用到一個(gè)計(jì)數(shù)器。 每當(dāng)一個(gè)表單成功提交,必須在一個(gè)Dictionary對象中存儲(chǔ)它的FID。 我們用一個(gè)專用的過程來初始化上述數(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對象中登記它的唯一標(biāo)識(shí): Sub RegisterFID() Dim strFID InitializeFID strFID = Request("FID") Session("FIDlist").Add strFID, now()
4、 End Sub (四)檢查表單是否重復(fù)提交 在正式處理用戶提交的表單之前,應(yīng)該在Dictionary對象中檢查它的FID是否已經(jīng)登記。下面的CheckFID()函數(shù)用來完成這個(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值來決定生成表單還是處理表單結(jié)果,它所描述的處理過程適合于大多數(shù)ASP應(yīng)用: %Option Explicit% !-#include file="forms.inc"- HTML HEAD TITLE表單提交測試 /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é)處理通過表單提交的內(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í)用戶可以按“后退”按鈕返回,在修正后再次提交同一表單。 這種對表單提交的限制最多只能在當(dāng)前會(huì)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 購買小區(qū)車庫合同協(xié)議
- 質(zhì)量異議協(xié)議書范本
- 貸款養(yǎng)殖協(xié)議書范本
- 貸款擔(dān)保合同補(bǔ)充協(xié)議
- 購買貨物送貨合同協(xié)議
- 貨物運(yùn)輸外包協(xié)議合同
- 《第03節(jié) 探究外力做功與物體動(dòng)能變化的關(guān)系》教學(xué)設(shè)計(jì)2
- 2025屆廣西貴百河聯(lián)盟高三9月調(diào)研聯(lián)考-生物試題(含答案)
- 2025屆東北三省精準(zhǔn)教學(xué)高三上學(xué)期開學(xué)考-數(shù)學(xué)試題(含答案)
- 2025年經(jīng)濟(jì)學(xué)入門課程考試試題及答案
- 委派合同范本
- 受托支付合同
- 鄉(xiāng)村規(guī)劃與設(shè)計(jì)教材課件
- 2023年高考-漢語文試卷及答案
- 2023年新高考英語復(fù)習(xí):讀后續(xù)寫專題練習(xí)10篇(含答案范文)
- 雙減背景下家校協(xié)同提升初中生自主學(xué)習(xí)能力的探究 論文
- 陜西省中考數(shù)學(xué)歷年(2016-2022年)真題分類匯編習(xí)題集(含真題答案)
- 航空油料特種設(shè)備修理員-航空油料特種設(shè)備修理員精選試題
- 2023年彭澤縣小升初英語考試題庫及答案解析
- HY/T 082-2005珊瑚礁生態(tài)監(jiān)測技術(shù)規(guī)程
- GB/T 4458.1-2002機(jī)械制圖圖樣畫法視圖
評論
0/150
提交評論