自动秒收录

如何限制同一表单被多次提交


文章编号:1710 / 分类:技术教程 / 更新时间:2023-04-12 09:50:39 / 浏览:

在Internet上我们每天都会遇到数不清的表单,也看到其中大部分并没有限制用户多次提交同一个表单。缺乏这种限制有时候会产生某些预料不到的结果,如重复订阅邮件服务或重复投票等。

如何限制同一表单被多次提交

下面我们依次讨论这四个子程序。

这里我们要在Session对象中保存两个变量,其中:

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

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

我们用一个专用的过程来初始化上述数据。虽然以后各个子程序都要调用它,但实际上每一个会话期间它只执行一次:

(二)生成表单的唯一标识符

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

(三)登记已提交表单

当表单成功地提交时,在Dictionary对象中登记它的唯一标识:

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

在正式处理用户提交的表单之前,应该在Dictionary对象中检查它的FID是否已经登记。下面的CheckFID()函数用来完成这个工作,如已经登记,它返回FALSE,否则返回TRUE:

有两个地方要用到上述函数,即表单生成时与结果处理时。假设上述四个子程序已经放入包含文件Forms.inc中,下面的代码根据FID值来决定生成表单还是处理表单结果,它所描述的处理过程适合于大多数ASP应用:

GenerateForm负责生成表单,表单中应该含有一个隐藏的FID,如:

ProcessForm负责处理通过表单提交的内容,但在处理之前应该先调用CheckFID()检查当前表单是否已经提交,代码类如:

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

三、限制与改进措施

上面我们介绍了在当前会话期间限制同一表单被多次提交的一种方法。在实际应用中可能需要从多方面加以改进,例如:

⑴在登记表单ID之前检查用户输入数据的合法性,使得数据不合法时用户可以按“后退”按钮返回,在修正后再次提交同一表单。

⑵这种对表单提交的限制最多只能在当前会话期间有效。如果要求这种限制能够跨越多个会话,那么就要用到Cookeis或数据库来保存相关数据了。

⑶这种方法是不安全的。它仅用于防范误操作,不能防止熟练用户有意地多次提交同一表单。

扫描二维码推送至手机访问。

3浏览自媒体运营与推广

2浏览网站结构优化

2浏览外部链接建设

2浏览自媒体运营与推广


相关标签: ASP

本文地址:https://www.badfl.com/article/8bf5f4ade06f04062e3f.html

上一篇:提高ASP页面显示速度的秘技...
下一篇:几行代码防止表单重复提交...

发表评论

温馨提示

做上本站友情链接,在您站上点击一次,即可自动收录并自动排在本站第一位!
<a href="https://www.badfl.com/" target="_blank">自动秒收录</a>