仓酷云

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

[学习教程] ASP网页设计在ASP中限定同以表单被屡次提交

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

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

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

x
对用户来说可预见费用、节约费用,可以做到花少钱办大事。由于省去了购买软件和硬件等的前期费用,用户可以租用较高级的应用软件。ASP的收费是根据软件的类型、客制化程度、用户数量、服务期限来定的,对客户来说这笔费用是可以预见的。方便于客户应用软件的升级。  本文先容在ASP使用中避免用户在以后会话时代屡次提交统一表单的一个复杂办法。它次要由四个子程序构成,在较为复杂的使用场所,你只需将这些代码放在包括文件中间接援用便可;关于那些较为庞大的情况,我们在文章的最初给出一些改善倡议。
  1、基础事情历程
  上面我们顺次会商这四个子程序。
  (一)初始化
  这里我们要在Session工具中保留两个变量,个中:
  ⑴每个表单对应一个称为FID的独一标识,为使该值独一要用到一个计数器。
  ⑵每当一个表单乐成提交,必需在一个Dictionary工具中存储它的FID。
  我们用一个公用的历程来初始化上述数据。固然今后各个子程序都要挪用它,但实践上每个会话时代它只实行一次:
SubInitializeFID()
IfNotIsObject(Session("FIDList"))Then
SetSession("FIDList")=Server.CreateObject("Scripting.Dictionary")
Session("FID")=0
EndIf
EndSub
  (二)天生表单的独一标识符
  上面这个函数GenerateFID()用于天生表单的独一标记。该函数起首将FID值加1,然后前往它:

FunctionGenerateFID()
InitializeFID
Session("FID")=Session("FID")+1
GenerateFID=Session("FID")
EndFunction
  (三)挂号已提交表单
  当表单乐成地提交时,在Dictionary工具中挂号它的独一标识:

SubRegisterFID()
DimstrFID
InitializeFID
strFID=Request("FID")
Session("FIDlist").AddstrFID,now()
EndSub

  (四)反省表单是不是反复提交
  在正式处置用户提交的表单之前,应当在Dictionary工具中反省它的FID是不是已挂号。上面的CheckFID()函数用来完成这个事情,如已挂号,它前往FALSE,不然前往TRUE:
FunctionCheckFID()
DimstrFID
InitializeFID
strFID=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")=""Then
GenerateForm
Else
ProcessForm
EndIf
%>
</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()Then
Response.Write"你输出的内容是"&Request.QueryString("param1")
RegisterFID
Else
Response.Write"此表单只能提交一次!"
EndIf
EndSub
%>

  3、限定与改善措施
  下面我们先容了在以后会话时代限定统一表单被屡次提交的一种办法。在实践使用中大概必要从多方面加以改善,比方:
  ⑴在挂号表单ID之前反省用户输出数据的正当性,使得数据分歧法时用户能够按“前进”按钮前往,在修改后再次提交统一表单。
  ⑵这类对表单提交的限定最多只能在以后会话时代无效。假如请求这类限定可以超过多个会话,那末就要用到Cookeis或数据库来保留相干数据了。
  ⑶这类办法是不平安的。它仅用于提防误操纵,不克不及避免纯熟用户成心地屡次提交统一表单。
Access是一种桌面数据库,只适合数据量少的应用,在处理少量数据和单机访问的数据库时是很好的,效率也很高。但是它的同时访问客户端不能多于4个。access数据库有一定的极限,如果数据达到100M左右,很容易造成服务器iis假死,或者消耗掉服务器的内存导致服务器崩溃。
变相怪杰 该用户已被删除
沙发
发表于 2015-1-19 05:10:21 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
分手快乐 该用户已被删除
板凳
发表于 2015-1-24 16:02:19 | 只看该作者
学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。
小女巫 该用户已被删除
地板
发表于 2015-2-2 10:47:04 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
莫相离 该用户已被删除
5#
发表于 2015-2-7 18:15:04 | 只看该作者
下载一个源代码,然后再下载一个VBScript帮助,在源代码中遇到不认识的函数或是其他什么程序,都可以查帮助进行解决,这样学习效率很高。
乐观 该用户已被删除
6#
发表于 2015-2-22 22:37:45 | 只看该作者
学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点:
金色的骷髅 该用户已被删除
7#
发表于 2015-3-7 03:52:43 | 只看该作者
我可以结合自己的经验大致给你说一说,希望对你有所帮助,少走些弯路。
透明 该用户已被删除
8#
发表于 2015-3-14 11:23:51 | 只看该作者
ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。
只想知道 该用户已被删除
9#
发表于 2015-3-21 05:21:45 | 只看该作者
Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-10-1 05:37

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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