设为首页收藏本站

新微赢技术网

 找回密码
 注册
搜索
热搜: 回贴
查看: 190|回复: 4
打印 上一主题 下一主题

简单的表单验证类 ASP Validator

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-16 20:49:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1、ASP Validator 简介 ASP Validator 是基于 ASP 的一个表单验证类,用于表单的服务器端验证。比如,验证表单中一个文本框(假设元素名为 UserEmail)的值是否为正确的电子邮件格式,按传统的方法您可能会编写这样的代码: Dim strEmail, objRegExp strEmail = Trim(Request.Form("UserEmail") Set objRegExp = New RegExp With objRegExp .Global = False .IgnoreCase = True .Pattern = "^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$" End With If objRegExp.Test(strEmail) = False Then Response.Write("非法的电子邮件格式") Set objRegExp = Nothing End If 而使用 ASP Validator 时您可能会编写如下代码: Dim objValidator Set objValidator = New Validator objValidator.Add "UserEmail", "Email", "非法的电子邮件格式", "" If Not objValidator.Validate Then Response.Write(objValidator.Err) Set objValidator = Nothing End If 上例中,虽然传统方法更显得直观,而且代码行数也没多多少,但是在实际应用中,经常会碰到对多个表单元素进行多种规则验证的情况,这时您不得不为每一个元素的每一种验证规则编写代码,虽然可以通过将常用函数写进包含文件的方式来减轻劳动强度,但仍需要花费大量的时间和精力来编写重复的代码片断(起码您需要写无数个 Request.Form("")、If Then 、……)。这时,使用 ASP Validator 的优越性便体现出来了。 上例中,我们使用了 ASP Validator 的 Add 方法、Validate 方法和 Err 属性。使用 ASP Validator 时,我们先通过 Add 方法添加需要验证的规则,然后通过 Validate 方法执行验证并得到验证结果,最后通过 Err 属性得到出错信息(如果有的话)。在 ASP Validator 中,我们把整个验证任务分解成若干条“规则”,通过 Add 方法来添加规则。Add 方法的函数原型如下: Public Sub Add(Element, RegType, ErrMsg, Para) Add 方法包含四个参数:表单元素名、规则类型、出错信息、规则参数。在上例中,表单元素名为 "UserEmail",规则类型为 "Email",出错信息为 "非法的电子邮件格式",规则参数为空。 在 ASP Validator 中,我们将规则类型分为两种:正则类和非正则类。对于正则类规则,我们只需给出规则类型(比如 Email 规则),不需需要规则参数。而对于非正则类规则(如 Length 规则),我们可能还需给出规则参数,比如验证一个表单元素(假设为 UserName)值的长度是否在 6 到 12 字节之间(一个数字或字母算一个字节,一个汉字算两个),您需要编写如下代码: objValidator.Add "UserName", "Length", "用户名长度必须在 6 到 12 字节之间", "6,12" 上例中,我们为 Length 规则指定了规则参数 "6,12",它指示了 Length 规则的最小长度和最大长度。对于非正则类规则,您需要查阅 程序员参考 来获悉每一种规则的参数格式。比如,Length 规则的参数格式为 "n,m",n 和 m 分别代表最小长度和最大长度,如果省略则代表不限(即 ",6" 代表最长为 6 个字节,"4," 代表最小 4 个字节)。现在 ASP Validator 支持如下规则类型:规则类型 验证功能 备注 Chinese 中文 正则类型 Currency 货币格式 正则类型 Custom 自定义正则表达式 非正则类型 Double 实数 正则类型 English 英文 正则类型 Equal 等于某个值 非正则类型 Integer 整数 正则类型 Length 字符串长度 非正则类型 Number 数字 正则类型 Phone 电话号码格式 正则类型 QQ QQ号码 正则类型 Require 必填项 正则类型 URL 基于HTTP协议的网址格式 正则类型 Zip 邮政编码 正则类型 2、使用 ASP Validator 例1:一个用户注册表单实例 '-----------------------------------------------Register.asp <--#include file="validate.cls.asp"--> 例1 中我们使用了带 {} 标记的 Equal 规则,它表示与表单中某一元素的值相等,具体信息请参考 Equal 规则用法。Equal 规则还有更高级的用法: 例2:一个用户登录表单实例 '-----------------------------------------------CheckLogin.asp <--#include file="validate.cls.asp"--><--#include file="md5.asp"--> 例2 中,我们使用了以 "SQL:" 引导的 Equal 规则参数,它表示与某一记录集(单列)作比较,如果在记录中能找到相等的值,则认为符合规则。此外,我们还使用了 AddElement 方法,它的作用是往 ASP Validator 中添加一个“虚拟”的元素,因为需要将用户提交的密码进行 Md5 加密,而 ASP Validator 并没有集成 Md5() 函数。当然,您也可以这么写: .Update "Password", md5(trim(request.form("Password"))) .Add "Password", "Equal", "用户名与密码不符", "SQL:SELECT Password FROM [Users] WHERE UserName='{UserName}'" 3、关于 ASP Validator 感谢 我佛山人。他写的 Validator(Javascript写的客户端验证器)很实用,并让我萌发了写 ASP Validator 的动机。配合 Validator 使用效果更佳。 感谢我的兄弟BeginXtu、Ralfmmx。他们测试了 ASP Validator 并提了很多建议。 这是我学习 ASP 以来第一次写类,不足之处还恳请大家批评指正。ASP Validator 是免费的,您可以在任何场合中自由地使用它。如果您对它作了改进,请发邮件给我(Nowgoo at Gmail dot Com),谢谢!
2#
发表于 2010-1-30 17:05:12 | 只看该作者
让梦想成真的最好办法就是醒来。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

申请友链|小黑屋|最新主题|手机版|新微赢技术网 ( 苏ICP备08020429号 )  

GMT+8, 2024-11-19 04:20 , Processed in 0.111231 second(s), 8 queries , Gzip On, Memcache On.

Powered by xuexi

© 2001-2013 HaiAn.Com.Cn Inc. 寰耽

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