西部数码
会员登陆
登录加载中...
超级搜索
栏  目  
类  别  
关键词  
 站内搜索   网络搜索
  
 当前位置:文章首页>>网页编程>>ASP实例>>ASP+JS处理复杂表单的生成与验证
推荐给你的朋友阅读:

ASP+JS处理复杂表单的生成与验证

来源:天极网 发表日期: 2007-01-09 10:41:08

  四、处理提交结果

  ASP脚本剩下的任务是服务器端的表单处理,包括验证、将结果保存到数据库以及“提交成功/失败”页面的显示。在这部分表单验证代码中用到了一个字符串变量sBadForm,程序用它来保存错误信息。如果在验证过程结束时sBadForm为空,说明用户提交的表单是合法的;否则,拒绝该表单的提交并把sBadForm返回给浏览器。

  不管表单采用哪种验证模式,检查HTTP_REFERER都是一种好的习惯。这种检查可以防止脚本被盗用。要检查某个POST是否来自本网站的页面或脚本,只需比较两个服务器变量即可:

以下是引用片段:
  IfInStr(Request.ServerVariables("HTTP_REFERER"),_
  Request.ServerVariables("HTTP_HOST"))=0Then
  sBadForm="<LI>表单提交自不正确的位置。"&vbCrlf
  EndIf

  如果表单的隐藏域指示必须进行服务器端验证,则程序遍历表单定义数据库记录作相应的检查,其过程与表单的生成非常相似,只不过此时程序是验证表单,且把输入值非法信息加入到sBadForm中去而已。具体代码见dForm.asp。

  程序最后检查sBadForm是否为空。如不为空,则拒绝表单提交并将sBadForm写入浏览器。如果sBadForm为空,则在Records表增加一个记录保存表单数据。在保存表单内容之前需要删除隐藏域val,这个隐藏域总是表单的第一个输入域:

以下是引用片段:
  IfLen(sBadForm)=0Then
  RS.Open"Records",DB,3,2,&H0002
  RS.AddNew
  RS.Fields("Record")=Mid(Request.Form,InStr(Request.Form,"&")+1)
  RS.Fields("Created")=Now()
  RS.Fields("RemoteIP")=Request.ServerVariables("REMOTE_ADDR")
  RS.Update
  Response.Write("<H1>谢谢.</H1>")
  RS.Close
  Else
  Response.Write("<H1>表单提交失败。</H1>")
  Response.Write(vbCrLf&sBadForm)
  EndIf
  EndIf

  这就是服务器端表单处理的全部过程。根据是否存在已经提交的表单,我们可以把前面生成表单的代码和这里表单处理的代码用If语句封装,使得这两部分脚本共享部分公用代码,比如HTML文档的头、数据库对象的创建和资源释放等。

  总地看来,dForm.asp只具备了动态表单生成、验证所必需的核心功能,忽略了许多细节问题的处理。比如前面已经提到的多表单问题:增加一个表管理多个表单,使得脚本具有管理、生成、处理指定表单的能力。另外一个明显的缺乏是表单定义数据的增加、删除和更新功能,以及用户提交结果数据的访问,这类功能可以在一个独立的程序中实现,而且在大多数情况下可以做成传统的应用程序(非B/S结构的应用)。最后,dForm.asp支持的输入域类型也有限,在实践中可能会有其他的表单输入要求,比如专用的e-mail地址输入框等。然而,对于那些经常要更新表单的网站来说,本文所讨论的表单动态生成、动态验证功能确实是非常有用的。

专业制作ASP网站

上一页 1 2 3 4 

0
0
[作者:匿名 关键词:表单 录入:raincity 责编:raincity 阅读次数:11881]

相关文章 相关新闻 相关软件 相关教程 公共评论 发表评论

  • ·暂无相关内容
  • ·暂无相关内容
  • ·暂无相关内容
    评论载入中...
    您的称呼  验 证 码   
    您的评论 [ 最多字数:  已用字数:剩余字数:]

     
COPYRIGHT 2003-2020 创意飞腾工作室(The Feitec Studio.) ALL RIGHTS RESERVED .
官方咨询:FeitecCMS5366464
页面加载时间:141.11ms Powered By:FeitecCMS V4.0(Build1101)
[蜀ICP备05000881]