仓酷云 发表于 2015-1-16 22:11:39

ASP教程之asp中完成限定反复提交统一表单

ASP.NET和ASP的比较,技术上比较已经没什么可说的了.新一代在大部分程度来说当然是比旧一代好了.关键看你对所做软件的理解了.因人而定.会写的话也可能比ASP.NET写得更有效率和更方便重用反复|反复提交  在Internet上我们天天城市碰到数不清的表单,也看到个中年夜部分并没无限制用户屡次提交统一个表单。缺少这类限定偶然候会发生某些意料不到的了局,如反复定阅邮件服务或反复投票等。也许一些asp初学者其实不分明在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或数据库来保留相干数据了。
楼上说交互性不好,太牵强了吧。在微软提供的一套框架中,利用asp做网站,开发效率高,使用人数少,减少不必要的开销。交互性是互动方式,是有开发人员决定的。

小女巫 发表于 2015-1-18 22:16:40

我就感觉到ASP和一些常用的数据库编程以及软件工程方面的思想是非常重要的。我现在也在尝试自己做网页,这其中就用到了ASP,我想它的作用是可想而知的。

飘灵儿 发表于 2015-1-24 15:40:27

不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍

活着的死人 发表于 2015-2-1 23:50:26

先学习用frontpage熟悉html编辑然后学习asp和vbscript建议买书进行系统学习

分手快乐 发表于 2015-2-7 16:44:11

兴趣爱好,那么你无须学编程,申请一个域名和空间,在网上下载一些免费开源的CMS系统,你不用改代码,只须熟悉它们的后台操作,像office一样简单方便,很快就能建一个站点,很多站长都是这样做的

飘飘悠悠 发表于 2015-2-22 16:56:23

虽然ASP也有很多网络教程。但是这些都不系统。都是半路出家,只是从一个例子告诉你怎么用。不会深入讨论,更不会将没有出现在例子里的方法都一一列举出来。

透明 发表于 2015-3-7 01:41:00

从事这个行业,那么你可以学ASP语言,简单快速上手,熟练dreamweav排版,写asp代码,熟练photoshop处理图片,打好基础就行了

再见西城 发表于 2015-3-14 06:40:25

弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。

爱飞 发表于 2015-3-21 01:21:51

我想问如何掌握学习节奏(先学什么再学什么)最好详细点?
页: [1]
查看完整版本: ASP教程之asp中完成限定反复提交统一表单