asp如何限制重复订阅邮件或重复投票?

时间:2010-06-09 18:48:00 

如何限制重复订阅邮件或投票?

一、准备子程序和函数。
1、初始化数据,在Session对象中保存两个变量:
Sub InitializeFID()
' 每一个表单对应一个称为FID的唯一标识,为使该值唯一要用到一个计数器
If Not IsObject(Session("FIDList")) Then
Set Session("FIDList")=Server.CreateObject("Scripting.Dictionary")
' 每当一个表单成功提交,必须在一个Dictionary对象中存储它的FID
Session("FID")=0
End If
End Sub  
以后各个子程序都要调用它,但实际上每一个会话期间它只执行一次

2、生成表单的唯一标识符的函数GenerateFID() :
Function GenerateFID()
InitializeFID
Session("FID") = Session("FID") + 1
' 该函数首先将FID值加1,然后返回它
GenerateFID = Session("FID")
End Function
  
3、当表单成功地提交时,在Dictionary对象中登记它的唯一标识:
Sub RegisterFID()
Dim strFID
InitializeFID
strFID = Request("FID")
Session("FIDlist").Add strFID, now()
End Sub

4、在正式处理用户提交的表单之前,应用CheckFID()函数在Dictionary对象中检查它的FID是否已经登记,如已经登记,它返回FALSE,否则返回TRUE:
Function CheckFID()
Dim strFID
InitializeFID
strFID = Request("FID")
CheckFID = not Session("FIDlist").Exists(strFID)
End Function

二、将上面四个子程序放入包含文件forms.inc中,再根据FID值来决定生成表单还是处理表单结果,看看完整代码:

< %Option Explicit%> 
< !--#include file="forms.inc"--> 
< HTML>
< HEAD> 
< TITLE>防止表单多次提交 - asp之家 www.aspxhome.com< /TITLE> 
< /HEAD 
< BODY> 
< % 
If Request("FID") = "" Then 
GenerateForm 
Else 
ProcessForm 
End If 
%> 
< /BODY> 
< /HTML> 
< % 
Sub GenerateForm() 
' GenerateForm负责生成表单,表单中应该含有一个隐藏的FID
%> 
< 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="确定"> 
< /form> 
< % 
End Sub 
%> 
 
< % 
Sub ProcessForm() 
' ProcessForm负责处理通过表单提交的内容,但在处理之前应该先调用CheckFID()检查当前表单是否已经提交
If CheckFID() Then 
Response.Write "您输入的内容是" & Request.QueryString("param1") 
RegisterFID 
Else 
Response.Write "噢,您已经提交过一次了!" 
End If 
End Sub
%> 


 

标签:邮件,投票,函数
0
投稿

猜你喜欢

  • CSS 的模块化思想

    2009-02-03 12:52:00
  • 使用vue打包时gzip压缩的两种方案

    2024-05-21 10:29:45
  • django foreignkey外键使用的例子 相当于left join

    2021-04-17 15:52:33
  • python time模块时间戳 与 结构化时间详解

    2021-04-09 11:06:42
  • mysql的select into给多个字段变量赋值方式

    2024-01-14 08:14:50
  • mysql重复索引与冗余索引实例分析

    2024-01-25 11:52:53
  • mysql缓冲和缓存设置详解

    2024-01-27 02:39:18
  • Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子

    2021-12-04 12:15:05
  • 编程经验点滴 动态SQL的拼接技巧

    2024-01-23 22:04:35
  • 基础的十进制按位运算总结与在Python中的计算示例

    2021-12-29 10:45:39
  • vue实现图片懒加载的方法分析

    2024-04-27 16:10:29
  • 巧妙的Sql函数日期处理方法

    2009-05-25 17:59:00
  • MySQL分区表管理命令汇总

    2024-01-25 21:55:38
  • [译]Javascript风格要素(二)

    2008-02-29 12:51:00
  • bpython 功能强大的Python shell

    2022-05-08 22:12:06
  • pythotn条件分支与循环详解(3)

    2023-11-14 01:35:06
  • python+flask实现API的方法

    2023-12-18 17:25:03
  • 关于pyinstaller生成.exe程序报错:缺少.ini文件的分析

    2023-12-25 13:43:22
  • MSSQL 基本语法及实例操作语句

    2024-01-28 10:29:59
  • python selenium自动化测试框架搭建的方法步骤

    2023-05-24 21:38:49
  • asp之家 网络编程 m.aspxhome.com