快捷搜索:  as  test  1111  test aNd 8=8  test++aNd+8=8  as++aNd+8=8  as aNd 8=8

澳门威尼人斯人app下载:在ASP中限制同一表单被多次提交



本文先容在ASP利用中防止用户在当前会话时代多次提交同一表单的一个简单措施。它主要由四个子法度榜样组成,在较为简单的利用处合,你只要将这些代码放在包孕文件中直接引用即可;对付那些较为繁杂的情况,我们在文章的着末给出一些改进建议。

一、基础事情历程

下面我们依次评论争论这四个子法度榜样。

(一)澳门威尼人斯人app下载初始化

这里我们要在Session工具中保存两个变量,此中:

⑴ 每一个表单对应一个称为FID的独一标识,为使该值独一要用到一个计数器。

⑵ 每当一个表单成功提交,必须在一个Dictionary工具中存储它的FID。

我们用一个专用的历程来初始化上述数据。虽然今后各个子法度榜样都澳门威尼人斯人app下载要调用它,但实际上每一个会话时代它只履行一次:

Sub InitializeFID()

If Not IsObject(Session("FIDList")) T澳门威尼人斯人app下载hen

Set澳门威尼人斯人app下载 Session("FIDList")=Server.CreateObject("Scripting.Dictionary")

Session("FID")=0

End If

End Sub

(二)天生表单的独一标识符

下面这个函数GenerateFID()用于天生表单的独一标志。该函数首先将FID值加1,然后返回它:

Function GenerateFID()

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

End Sub

(四)反省表单是否重复提交

在正式处置惩罚用户提交的表单之前,应该在Dictionary工具中反省它的FID是否已经挂号。下面的CheckFID()函数用来完成这个事情,如已经挂号,它返回FALSE,否则返回TRUE:

Function CheckFID()

Dim strFID

InitializeFID

strFID = Request("FID")

CheckFID = not Session("FIDlist").Exists(strFID)

End Function

二、若何应用

有两个地方要用到上述函数,即表单天生时与结果处置惩罚时。假设上述四个子法度榜样已经放入包孕文件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认真天生表单,表单中应该含有一个暗藏的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

%>

ProcessForm认真处置惩罚经由过程表单提交的内容,但在处置惩罚之前应该先调用CheckFID()反省当前表单是否已经提交,代码类如:

< %

Sub ProcessForm()

If CheckFID() Then

Response.Write "你输入的内容是" & Request.QueryString("param1")

RegisterFID

Else

Response.Write "此表单只能提交一次!"

End If

End Sub

%>

三、限定与改进步伐

上面我们先容了在当前会话时代限定同一表单被多次提交的一种措施。在实际利用中可能必要从多方面加以改进,例如:

⑴ 在挂号表单ID之前反省用户输入数据的澳门威尼人斯人app下载合法性,使得数据分歧法时用户可以按“退却撤退”按钮返回,在修正后再次提交同一表单。

⑵ 这种对表单提交的限定最多只能在当前会话时代有效。假如要求这种限定能够超过多个会话,那么就要用到Cookeis或数据库来保存相关数据了。

⑶ 这种措施是不安然的。它仅用于警备误操作,不能防止纯熟用户故意地多次提交同一表单。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

您可能还会对下面的文章感兴趣: