仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 496|回复: 8
打印 上一主题 下一主题

[学习教程] ASP网页编程之在ASP使用中怎样限定统一表单被屡次提交...

[复制链接]
蒙在股里 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:37:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
只要你想学,就没什么优缺点,上面那位大哥已经把网上的评论说了,但我认为想学哪个都一样,不然它就不可能在当今时代数字艺术方面存活到今天在Internet上我们天天城市碰到数不清的表单,也看到个中年夜部分并没无限制用户屡次提交统一个表单。缺少这类限定偶然候会发生某些意料不到的了局,如反复定阅邮件服务或反复投票等。本文先容在ASP使用中避免用户在以后会话时代屡次提交统一表单的一个复杂办法。它次要由四个子程序构成,在较为复杂的使用场所,你只需将这些代码放在包括文件中间接援用便可;关于那些较为庞大的情况,我们在文章的最初给出一些改善倡议。
1、基础事情历程
上面我们顺次会商这四个子程序。
(一)初始化
这里我们要在Session工具中保留两个变量,个中:
⑴每个表单对应一个称为FID的独一标识,为使该值独一要用到一个计数器。
⑵每当一个表单乐成提交,必需在一个Dictionary工具中存储它的FID.
我们用一个公用的历程来初始化上述数据。固然今后各个子程序都要挪用它,但实践上每个会话时代它只实行一次:
SubInitializeFID()
IfNotIsObject(Session("FIDList"))ThenSetSession("FIDList")=Server.CreateObject("Scripting.Dictionary")
Session("FID")=0EndIfEndSub
(二)天生表单的独一标识符
上面这个函数GenerateFID()用于天生表单的独一标记。该函数起首将FID值加1,然后前往它:
FunctionGenerateFID()
InitializeFIDSession("FID")=Session("FID")+1GenerateFID=Session("FID")
EndFunction
(三)挂号已提交表单
当表单乐成地提交时,在Dictionary工具中挂号它的独一标识:
SubRegisterFID()
DimstrFIDInitializeFIDstrFID=Request("FID")
Session("FIDlist")。AddstrFID,now()
EndSub
(四)反省表单是不是反复提交
在正式处置用户提交的表单之前,应当在Dictionary工具中反省它的FID是不是已挂号。上面的CheckFID()函数用来完成这个事情,如已挂号,它前往FALSE,不然前往TRUE:
FunctionCheckFID()
DimstrFIDInitializeFIDstrFID=Request("FID")
CheckFID=notSession("FIDlist")。Exists(strFID)
EndFunction
2、怎样利用
有两个中央要用到上述函数,即表单天生时与了局处置时。假定上述四个子程序已放进包括文件Forms.inc中,上面的代码依据FID值来决意天生表单仍是处置表单了局,它所形貌的处置历程合适于年夜多半ASP使用:
<%OptionExplicit%><!――#includefile="forms.inc"――><HTML><HEAD><TITLE>表单提交测试</TITLE></HEAD<BODY><%IfRequest("FID")=""ThenGenerateFormElseProcessFormEndIf%></BODY></HTML>
GenerateForm卖力天生表单,表单中应当含有一个埋没的FID,如:
<%SubGenerateForm()
%><formaction="<%=Request.ServerVariables("PATH_INFO")%>"method=GET><inputtype=hiddenname=FIDvalue="<%=GenerateFID()%>"><inputtype=textname="param1"value=""><inputtype=submitvalue="OK"></form><%EndSub%>
ProcessForm卖力处置经由过程表单提交的内容,但在处置之前应当先挪用CheckFID()反省以后表单是不是已提交,代码类如:<%SubProcessForm()
IfCheckFID()ThenResponse.Write"你输出的内容是"&Request.QueryString("param1")
RegisterFIDElseResponse.Write"此表单只能提交一次!"EndIfEndSub%>
3、限定与改善措施
下面我们先容了在以后会话时代限定统一表单被屡次提交的一种办法。在实践使用中大概必要从多方面加以改善,比方:
⑴在挂号表单ID之前反省用户输出数据的正当性,使得数据分歧法时用户能够按“前进”按钮前往,在修改后再次提交统一表单。
⑵这类对表单提交的限定最多只能在以后会话时代无效。假如请求这类限定可以超过多个会话,那末就要用到Cookeis或数据库来保留相干数据了。
⑶这类办法是不平安的。它仅用于提防误操纵,不克不及避免纯熟用户成心地屡次提交统一表单。
由于ASP还是一种Script语言所没除了大量使用组件外,没有办法提高其工作效率。它必须面对即时编绎的时间考验,同时我们还不知其背后的组件会是一个什么样的状况;
灵魂腐蚀 该用户已被删除
沙发
发表于 2015-1-19 19:26:08 | 只看该作者
不能只是将它停留在纸上谈兵的程度上。
分手快乐 该用户已被删除
板凳
发表于 2015-1-28 09:47:32 | 只看该作者
我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
海妖 该用户已被删除
地板
发表于 2015-2-5 20:25:07 | 只看该作者
在平时的学习过程中要注意现学现用,注重运用,在掌握了一定的基础知识后,我们可以尝试做一些网页,也许在开始的时候我们可能会遇到很多问题,比如说如何很好的构建基本框架。
再见西城 该用户已被删除
5#
发表于 2015-2-13 13:09:09 | 只看该作者
我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。
兰色精灵 该用户已被删除
6#
发表于 2015-3-3 21:37:24 | 只看该作者
它可通过内置的组件实现更强大的功能,如使用A-DO可以轻松地访问数据库。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-11 13:58:33 | 只看该作者
交流是必要的,不管是生活还是学习我们都要试着去交流,通过交流我们可以学到很多我们自己本身所没有的知识,可以分享别人的经验甚至经历。
山那边是海 该用户已被删除
8#
发表于 2015-3-18 17:56:58 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
柔情似水 该用户已被删除
9#
发表于 2015-3-26 09:34:57 | 只看该作者
ASP也是这几种脚本语言中最简单易学的开发语言。但ASP也是这几种语言中唯一的一个不能很好支持跨平台的语言。  因为ASP脚本语言非常简单,因此其代码也简单易懂,结合HTML代码,可快速地完成网站的应用程序。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 14:21

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表