|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
在实现ERP等高端的ASP应用时,用户需要提供核心的经营资料,需要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或数据库来保留相干数据了。
⑶这类办法是不平安的。它仅用于提防误操纵,不克不及避免纯熟用户成心地屡次提交统一表单。
</p>使用filesystemobject,可以对服务器上的文件进行操作,浏览、复制、移动、删除等。有ado的支持,asp对数据库的操作非常得心应手。你甚至可以像使用本地数据库那样,管理远程主机上的数据库,对表格、记录进行各种操作。 |
|