网络编程
位置:首页>> 网络编程>> Asp编程>> asp如何限制重复订阅邮件或重复投票?

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之家 www.aspxhome.com