asp中限制重复提交表单的方法

来源:蓝色理想 时间:2007-09-20 13:28:00 

在Internet上我们每天都会遇到数不清的表单,也看到其中大部分并没有限制用户多次提交同一个表单。缺乏这种限制有时候会产生某些预料不到的结果,如重复订阅邮件服务或重复投票等。或许一些asp初学者并不清楚在asp应用中如何限制重复提交同一表单,所以在这里向大家介绍在ASP应用中防止用户在当前会话期间多次提交同一表单的一个简单方法。
  这个工作主要由四个子程序组成,在较为简单的应用场合,你只要将这些代码放在包含文件中直接引用即可;对于那些较为复杂的环境,我们在文章的最后给出一些改进建议。
  一、基本工作过程
  下面我们依次讨论这四个子程序。
  (一)初始化
  这里我们要在Session对象中保存两个变量,其中:
   ⑴ 每一个表单对应一个称为FID的唯一标识,为使该值唯一要用到一个计数器。
   ⑵ 每当一个表单成功提交,必须在一个Dictionary对象中存储它的FID。
  我们用一个专用的过程来初始化上述数据。虽然以后各个子程序都要调用它,但实际上每一个会话期间它只执行一次:

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

标签:表单,提交,限制
0
投稿

猜你喜欢

  • Python实现快速保存微信公众号文章中的图片

    2021-02-18 23:03:25
  • JS重载实现方法分析

    2023-10-07 08:09:04
  • pytorch索引查找 index_select的例子

    2023-09-12 20:45:05
  • python之数字图像处理方式

    2023-02-02 18:27:09
  • C#中通过使用Connection类来实现打开/关闭数据库的代码实例

    2024-01-21 22:36:55
  • python实现根据文件关键字进行切分为多个文件的示例

    2021-03-04 16:35:19
  • 安装完成后如何找回SQL Server实例安装时的序列号

    2024-01-16 02:07:27
  • JSONObject使用方法详解

    2024-05-03 15:06:47
  • MySQL Packet for query is too large 问题及解决方法

    2024-01-29 07:55:52
  • 网站中美好的细节

    2011-07-13 18:43:07
  • 在Python中使用HTML模版的教程

    2023-01-17 23:30:38
  • PYcharm 激活方法(推荐)

    2022-07-27 01:51:21
  • python程序的打包分发示例详解

    2023-09-26 15:25:27
  • JavaScript 判断浏览器类型及版本

    2024-05-13 10:36:39
  • python提取word文件中的所有图片

    2022-04-10 13:56:39
  • Flask处理Web表单的实现方法

    2021-10-20 17:13:36
  • php引用和拷贝的区别知识点总结

    2023-11-15 03:39:48
  • php 面试碰到过的问题 在此做下记录

    2024-06-05 09:39:48
  • 原生js实现autocomplete插件

    2024-04-17 09:44:55
  • 详解Python读取配置文件模块ConfigParser

    2022-02-25 09:05:23
  • asp之家 网络编程 m.aspxhome.com