ASP如何防止表单重复提交_ASP教程
教程Tag:暂无Tag,欢迎添加,赚取U币!
推荐:如何解决left截取字符标题长度不一我们经常看到直接用left截字符串时,因为标题中会出现汉字和英文共存,所以造成两条新闻标题长度不一,为了解决这个问题我们可以使用下面这个函数。 % ’************************************************** ’函数名:gotTopic ’作用:截字符串,汉字一个算
用户提交表单时经常会遇到一些意外情况,比如多次刷新页面、按了后退键等,如果不采取控制措施就会引起表单重复提交的问题。本文介绍的这种防止方法,主要由四个子程序组成,在较为简单的应用场合,你只要将这些代码放在包含文件中直接引用即可;对于那些较为复杂的环境,我们在文章的最后给出一些改进建议。
一、基本工作过程
下面我们依次讨论这四个子程序。
(一)初始化
这里我们要在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
分享:解读用asp编写类似搜索引擎功能的代码首先建一个 access 数据库 ,库中有一个URLINDEX表,其中URL和Keywords字段分别添加了索引,如下: URL 文本(索引:有(无重复)) Title文本 Description文本 Summary文本 Keywords文本(索引:有(无重复)) 程序文件doquery.asp,代码: HTMLHEADTITLE简单搜索引擎
相关ASP教程:
- 相关链接:
- 教程说明:
ASP教程-ASP如何防止表单重复提交。