当前位置:中国站长下载文章中心网页编程ASP编程 → 高级表单验证-针对多次提交表单

高级表单验证-针对多次提交表单

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-13 0:46:39
些数据已经在上下文范围之外,因为本来应该在前面 表单收集的session 数据丢失了。
  
  避免使用中间步骤表单
  
    为了避免这些问题,可以存储当前数据收集的状态。这个状态可以用一个session 变量来代表 来记录是否执行了一个特定的步骤---用户是否填充了给出的表单。在一个多步骤表单中,每个表单都可以通过一个Boolean型的session变量来实现。如果有关表单没有被处理,变量就为False ,反之就是True。下载部分的第二个例子显示一个两步骤表单:第一个表单要求用户名,第二个表单显示一个组合框,它的列表项要依赖第一个表单所提供的用户名。第一个表单与一个session变量requested1相关联,你可以想象出来,第二个表单与变量requested2相关联。当用户要求第一个表单(form1.asp) 时,session变量 requested1 被设置为 True :
  
  〈 FORM METHOD="post" ACTION="form2.asp" 〉
  Your name: 〈 INPUT TYPE="text" NAME="name" 〉
  〈 P 〉
  〈 INPUT TYPE="submit" VALUE="Submit" 〉
  〈 INPUT TYPE="reset" VALUE="Cancel" 〉
  〈 /FORM 〉
  〈 % Session("requested1") = True % 〉
  
    这个值将由下一个表单( form2.asp ) 来校验,以确定是否满足了要求。事实上当用户要求第二个表单时校验requested1 变量。如果为True,就向浏览器发送第二个表单并将requested2变量设置为True。如果为False 就意味着用户想要直接使用第二个表单,于是浏览器就重定向到第一个表单。以下代码是第二个表单的ASP页:
  
  〈 % If Session("requested1") Then % 〉
  〈 HTML 〉
  〈 HEAD 〉
  〈 /HEAD 〉
  〈 BODY 〉
  〈 !-- Code for the second form -- 〉
  ... 〈 % Session("requested2") = True Else Response.Redirect "form1.asp" End If % 〉
  〈 /BODY 〉
  〈 /HTML 〉
  
    要注意对requested1 的校验必须要在〈 HTML 〉记录之前进行,这样就允许可能的重定向。实际上,重定向是对浏览器的指示,它出现在HTTP头文件中,在所有的HTML代码之前。
  
  结论
  
    本文所示范的两种技巧允许ASP开发人员对某些奇怪的情况有所控制,这些奇怪情况会造成用户 通过一个Web 表单向服务器重复发送数据。每个技巧解决一个特定问题,所以最好将两者混合使用,在ASP应用程序每个表单中管理两个session 变量。
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。

上一页  [1] [2]