在互联网上,我们每天都会遇到无数的表单,而且大多数用户并不限制用户多次提交同一张表格。
缺乏这样的限制有时会产生意想不到的结果,比如重复订阅邮件或重复投票。
ASP初学者不知道如何在ASP应用程序中限制重复提交到同一表单,所以这里介绍了ASP应用程序的预防。
用户在当前会话中多次提交同一表单的一种简单方法。

这项工作主要由四个子例程组成,应用程序比较简单,只要你把这个代码放在文件中就行了。
对于更复杂的环境,本文最后给出了一些改进建议。

1。基本工作过程

在这里,我们讨论四个子程序,反过来,U3000

(i)初始化

在这里,我们必须在会话对象中保存两个变量:

每个表单对应一个称为FID的唯一标识符,以便使值只使用计数器。

2每当成功提交表单时,必须将其存储在FID中的字典对象中。

我们使用一个专用的进程来初始化上面的数据。
在Word中,它只执行一次:

复制代码代码如下所示:
Sub InitializeFID()
如果Not IsObject(Session(fidlist ))然后
设置会话(fidlist )= server.createobject(脚本。词典)
会话()= 0
最后如果
端子


(二)表单的惟一标识符

下面的函数,generatefid(),用来生成形式的唯一标志。这个函数首先将FID值为1,然后返回它:
复制代码代码如下所示:
GenerateFID()函数
initializefid
会话()=会话()+ 1
generatefid =会话(FID)
端功能


(三)提交表格的登记

当表单成功提交时,字典对象的唯一标识已注册:
复制代码代码如下所示:
Sub RegisterFID()
昏暗的strfid
initializefid
strfid =请求(FID)
会议(fidlist )添加strfid,现在()。
端子

(四)检查表单是否重复提交。

在用户提交表单正式处理之前,应在字典对象中检查其对象是否已注册。
的checkfid()函数来做这项工作,如果它已被注册,则返回FALSE,否则返回真:

复制代码代码如下所示:
CheckFID()函数
昏暗的strfid
initializefid
strfid =请求(FID)
checkfid =没有会话(fidlist )存在(strfid)。
端功能

两。如何使用它

使用上述功能在两个地方,那就是,当形式的产生和处理结果。如果上述四个子程序已投入鲍汉文
在部分forms.inc,下面的代码确定的形式产生或形成的结果是基于FID值处理,适用于描述的过程。
在大多数ASP应用程序中:
复制代码代码如下所示:




表单提交测试
< /头

< %
如果请求(),则
generateform
其他的
processform
最后如果
%>



generateform负责生成一个表,其中应包含一个隐藏的FID,如:

复制代码代码如下所示:
< %
Sub GenerateForm()
%>
方法=获取>
>



< %
端子
%>

processform负责处理的表单提交的内容,但在处理之前,你应该打电话给checkfid()检查是否当前的形式已经
提交后,代码类如下:

复制代码代码如下所示:

< %
Sub ProcessForm()
如果CheckFID()然后
响应。写着你已进入了request.querystring(参数)
registerfid
其他的
回复:写此表格只能提交一次。!
最后如果
端子
%>

三、制约与改进措施

在上面,我们介绍了一种在当前会话中限制同一表单的多个提交的方法。
例如,许多方面都得到了改进:

检查用户输入数据的有效性,在登记表ID之前,数据不合法的用户可以点击后退按钮。
返回,在更正后再次提交相同的表单。

这种限制只能在本届会议上提交,如果需要跨越多个会话进行限制。
然后你需要使用cookeis或数据库来保存相关数据。