在ASP中限制同一表單被多次提交_第1頁
在ASP中限制同一表單被多次提交_第2頁
在ASP中限制同一表單被多次提交_第3頁
在ASP中限制同一表單被多次提交_第4頁
全文預覽已結束

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、    本文介紹在ASP應用中防止用戶在當前會話期間多次提交同一表單的一個簡單方法。它主要由四個子程序組成,在較為簡單的應用場合,你只要將這些代碼放在包含文件中直接引用即可;對于那些較為復雜的環境,我們在文章的最后給出一些改進建議。 一、基本工作過程 下面我們依次討論這四個子程序。 (一)初始化 這里我們要在Session對象中保存兩個變量,其中: 每一個表單對應一個稱為FID的唯一標識,為使該值唯一要用到一個計數器。 每當一個表單成功提交,必須在一個Dictionary對象中存儲它的FID。 我們用一個專用的過程來初始化上述數據。雖然以后各個子程序都要

2、調用它,但實際上每一個會話期間它只執行一次: Sub InitializeFID() If Not IsObject(Session("FIDList") Then Set Session("FIDList")=Server.CreateObject("Scripting.Dictionary") Session("FID")=0 End If End Sub (二)生成表單的唯一標識符 下面這個函數GenerateFID()用于生成表單的唯一標志。該函數首先將FID值加1,然后返回它: Function Gene

3、rateFID() InitializeFID Session("FID") = Session("FID") + 1 GenerateFID = Session("FID") End Function (三)登記已提交表單 當表單成功地提交時,在Dictionary對象中登記它的唯一標識: Sub RegisterFID() Dim strFID InitializeFID strFID = Request("FID") Session("FIDlist").Add strFID, now()

4、 End Sub (四)檢查表單是否重復提交 在正式處理用戶提交的表單之前,應該在Dictionary對象中檢查它的FID是否已經登記。下面的CheckFID()函數用來完成這個工作,如已經登記,它返回FALSE,否則返回TRUE: Function CheckFID() Dim strFID InitializeFID strFID = Request("FID") CheckFID = not Session("FIDlist").Exists(strFID) End Function 二、如何使用 有兩個地方要用到上述函數,即表單生成時與結果處理時

5、。假設上述四個子程序已經放入包含文件Forms.inc中,下面的代碼根據FID值來決定生成表單還是處理表單結果,它所描述的處理過程適合于大多數ASP應用: %Option Explicit% !-#include file="forms.inc"- HTML HEAD TITLE表單提交測試 /TITLE /HEAD BODY % If Request("FID") = "" Then GenerateForm Else ProcessForm End If % /BODY /HTML GenerateForm負責生成表單,表單中應該

6、含有一個隱藏的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負責處理通過表單提交的內容,但在處理之前應該先調用CheckFID()檢查當前表單是否已經提交,代碼類如: % Sub ProcessForm() If CheckFID() Then Response.Write "你輸入的內容是" & Request.QueryString("param1") RegisterFID Else Response.Write "此表單只能提交一次!" End If End Sub % 三、限制與改進措施 上面我們介紹了在當前會話期間限制同一表單被多次提交的一種方法。在實際應用中可能需要從多方面加以改進,例如: 在登記表單ID之前檢查用戶輸入數據的合法性,使得數據不合法時用戶可以按“后退”按鈕返回,在修正后再次提交同一表單。 這種對表單提交的限制最多只能在當前會

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論