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

猜你喜欢

  • asp自动采集程序

    2009-02-04 10:11:00
  • ORACLE数据库空间整理心得

    2010-07-16 13:33:00
  • Oracle SID存在解決方法

    2009-06-19 17:34:00
  • WAP页面设计与实现小贴士

    2011-01-10 20:38:00
  • 再谈动态添加样式规则

    2009-09-02 13:10:00
  • 网址导航的组织方法

    2008-09-27 12:35:00
  • QQ连连看 for iPhone 设计实录分享

    2010-09-25 12:54:00
  • 窥探jQuery——面向JavaScript程序员

    2008-06-17 14:35:00
  • js滑动展开与折叠效果(收缩)

    2007-10-09 13:17:00
  • eWebEditor不支持IE,IE8,IE7,火狐,遨游的解决方法

    2011-06-06 07:57:00
  • MYSQL启用日志和查看日志

    2010-12-03 16:24:00
  • Web开发与JavaScript编辑利器——Aptana Studio简介

    2008-05-05 13:32:00
  • FSO无效的过程调用或参数问题

    2010-03-25 21:49:00
  • PHP结构型模式之代理模式

    2023-05-25 06:55:34
  • 22个HTML5的初级技巧

    2010-12-17 12:39:00
  • asp生成带有样式的word文件方法

    2011-04-18 10:30:00
  • asp中的on error resume next用法

    2008-03-09 15:22:00
  • sqlserver 巧妙的自关联运用

    2012-07-21 14:55:12
  • 鼠标驱动图片变化

    2009-07-26 10:03:00
  • 仿豆瓣分页原型(Javascript版)

    2007-11-05 14:04:00
  • asp之家 网络编程 m.aspxhome.com