请选择 进入手机版 | 继续访问电脑版

 找回密码
 注册

只需一步,快速开始

蓝色理想 最新研发动态 通过这个窗口,关注跟踪我们调整进展 新增任务 - 我的位置更新 - 给官方提建议

论坛活动 归纳网站最新活动 积分竞拍第二弹 - 12周年上海聚会报名了

万元奖励等你拿——点点网模板设计大赛 官方QQ群征集中 看看有才会员作品,欢迎打分拍砖

查看: 70621|回复: 250

表单验证 Validator v4.0 测试 [复制链接]

我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-27 01:54:46 |显示全部楼层
旧版本讨论 : http://bbs.blueidea.com/thread-1834871-1-1.html
1.05 & ASP、PHP版:http://www.blueidea.com/tech/web/2004/2360.asp

4.0 功能特点
1.支持Ajax验证
2.实现密码安全度等级验证及显示
3.5种配置方式
4.6种消息提示模式
5.能避免网络原因未完全下载validator.js时提交未经验证表单的
6.避免变量名冲突
7.详细的帮助说明文档
8. ...

下载:
CHM帮助:
程序文件:(内含超简单代码生成,目前正在不断加强)

注意:
1.目前提供的脚本是基于Mootools 1.2beta2的,稍后会提供独立版本,未来可能会提供Prototype与jQUery的版本
2.如果您的项目使用Mootools以外的JS框架,请保持关注,以等待独立版本或相应框架下的版本
3.希望大家下载试用,跟帖提供Bug的报告
4.有问题可以直接跟帖提问,方便整理FAQ到CHM中
5.由于下载包中的示例程序使用Ajax,所以务必使用HTTP方式访问(或者删除index.html第21行中的xml,改成configs : 'attribute,tag',)

[ 本帖最后由 我佛山人 于 2008-3-27 02:01 编辑 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?注册
已有 1 人评分威望 收起 理由
wuleying + 1 谢谢分享 忍不住打个分..

总评分: 威望 + 1   查看全部评分

滚呀滚雪球

钻石会员

帖子
620
体力
8506
威望
0
发表于 2008-3-27 09:10:44 |显示全部楼层


笨笨兔子

高级会员

帖子
581
体力
909
威望
2
居住地
广东省 深圳市
发表于 2008-3-27 09:15:35 |显示全部楼层
大佛的心血啊,,太棒了

前3楼,顶
…………
帖子
12
体力
50
威望
0
发表于 2008-3-27 09:41:38 |显示全部楼层
支持出jquery版本
帖子
1327
体力
7177
威望
0
居住地
陕西省 西安市
发表于 2008-3-27 09:59:26 |显示全部楼层
一直在使用 一直在关注 一直向说声谢谢!

井底的蛙

银牌会员  

帖子
1446
体力
2414
威望
7
居住地
上海市 长宁区
发表于 2008-3-27 10:19:49 |显示全部楼层
不知道这个算不算致命的BUG,很多表单验证都有:
禁止网页脚本,可轻松绕过客户端所有验证

解决也比较简单,用JS提交表单就可以了。
深夜,我,拖着疲惫的步伐迈向心中的理想。
帖子
439
体力
1366
威望
1
居住地
河南省 郑州市
发表于 2008-3-27 10:20:38 |显示全部楼层
没得说 顶一个
no idea
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-27 10:31:42 |显示全部楼层
原帖由 WellFrog 于 2008-3-27 10:19 发表
不知道这个算不算致命的BUG,很多表单验证都有:
禁止网页脚本,可轻松绕过客户端所有验证

解决也比较简单,用JS提交表单就可以了。



你说的解决方法不太明白,这个BUG算不上,这是浏览器决定的,而且客户端的验证是不可靠的,但又是必不可少的
帖子
15784
体力
27818
威望
19
发表于 2008-3-27 10:34:23 |显示全部楼层
原帖由 WellFrog 于 2008-3-27 10:19 发表
不知道这个算不算致命的BUG,很多表单验证都有:
禁止网页脚本,可轻松绕过客户端所有验证

解决也比较简单,用JS提交表单就可以了。


禁止网页脚本的用户比率能有多少?

现状是禁用js后大多数网站访问都会出现问题..

井底的蛙

银牌会员  

帖子
1446
体力
2414
威望
7
居住地
上海市 长宁区
发表于 2008-3-27 10:49:09 |显示全部楼层
原帖由 我佛山人 于 2008-3-27 10:31 发表



你说的解决方法不太明白,这个BUG算不上,这是浏览器决定的,而且客户端的验证是不可靠的,但又是必不可少的


客户端验证是防君子不防小人
浏览器都会有一个“禁止运行网页脚本”的选项
选中后网页脚本失效
如果服务器端没有一套和客户端一样的正则验证,那势必可能出现意料以外的数据

对于想恶意提交的人,这可比外部提交方便多了
------------------------------------------------------------------------------------------------------------
我的解决办法的意思是
表单用button的onclick事件提交,且表单的action地址通过JS设置
深夜,我,拖着疲惫的步伐迈向心中的理想。

井底的蛙

银牌会员  

帖子
1446
体力
2414
威望
7
居住地
上海市 长宁区
发表于 2008-3-27 10:52:23 |显示全部楼层
原帖由 wuleying 于 2008-3-27 10:34 发表


禁止网页脚本的用户比率能有多少?

现状是禁用js后大多数网站访问都会出现问题..


一般人不会禁止网页脚本
但客户端验证就是为了防止那些恶意提交的人

的确禁用js后大多数网站访问都会出现问题
但恶意提交的人只需要表单能提交出去就可以了
深夜,我,拖着疲惫的步伐迈向心中的理想。
ecma 

请叫我草履虫

银牌会员

帖子
917
体力
2208
威望
3
居住地
福建省 福州市
发表于 2008-3-27 10:55:14 |显示全部楼层
前台验证为了减少用户误操作,提高体验度

后台验证为了安全性

二者不冲突,恶意提交验证使用后台验证(即便AJAX)
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-27 11:09:25 |显示全部楼层
原帖由 WellFrog 于 2008-3-27 10:49 发表


客户端验证是防君子不防小人
浏览器都会有一个“禁止运行网页脚本”的选项
选中后网页脚本失效
如果服务器端没有一套和客户端一样的正则验证,那势必可能出现意料以外的数据

对于想恶意提交的人,这可 ...



这是一种方法,不过一样防不住,只要执行formObject.submit()就提交了

井底的蛙

银牌会员  

帖子
1446
体力
2414
威望
7
居住地
上海市 长宁区
发表于 2008-3-27 11:16:50 |显示全部楼层
你没明白我的意思
你的表单验证如果禁止网页脚本还是可以正常提交的
但如果“表单用button的onclick事件提交,且表单的action地址通过JS设置”
那么禁止网页脚本后,表单是无法提交的
深夜,我,拖着疲惫的步伐迈向心中的理想。
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-27 11:22:00 |显示全部楼层
这又是用户体验的问题,禁止网页脚本的用户不一定就是恶意用户,你不允许提交表单,却是将他视作恶意用户了,所以为了安全起见,后端的验证也是必不可少的,所以现在的配置方式里有json和xml,就是方便前后台配合验证,保证验证规则的一致性

井底的蛙

银牌会员  

帖子
1446
体力
2414
威望
7
居住地
上海市 长宁区
发表于 2008-3-27 11:45:02 |显示全部楼层
刚才看了下,你的正则规则是写在JS文件里的。。。后台使用规则不大方便吧
深夜,我,拖着疲惫的步伐迈向心中的理想。
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-27 13:27:27 |显示全部楼层
那个js是我测试用的,实际使用时通常是后台程序给ajax返回json数据
帖子
65
体力
80
威望
0
发表于 2008-3-27 18:11:51 |显示全部楼层
終於見到了更新版本

邂逅思维

中级会员

帖子
120
体力
274
威望
1
居住地
江苏省 宿迁市
发表于 2008-3-27 18:13:26 |显示全部楼层
不错,还没怎么细细品味,从用户体验和开发自定义功能都比以前的版本要好多了
方便了我们这些Web开发人员,感谢
最好也把各种动态网页的后台服务器验证也写一下吧,呵呵!!
最近模仿ASP.Net,用Jscript写了ASP的一些方便的服务器端功能。
比较喜欢和提倡写一些底层的代码,不管能不能方便别人,至少能够让自己省事、提高效率。
不是太喜欢ASP.Net的那些控件,就好像在写桌面程序,在用户体验和特殊功能上面大打折扣,失去了web编程的灵活性和多样性!
我身边有很多从做软件出身的ASP.Net程序员,他们只知道用.Net控件。遇到点比较麻烦的客户端验证不知道使用javascript,翻大量的资料去研究ASP.Net验证控件,但是还是于事无补。
再次感谢 我佛·山人,我想我不会再花多少经历再去研究Atlas,大家尝试自己写写最底层的东西吧,从HTML、XHTML、JavaScript、CSS、XML开始!!
帖子
3891
体力
8324
威望
12
发表于 2008-3-27 20:53:44 |显示全部楼层
@WellFrog :提交恶意数据有很多方式,而并非按照你说的就能防止,比如用其他工具发HTTP包,或者将页面保存到本地修改后提交等

前台的表单验证恰恰不是为了防止恶意用户而存在的,而是为了让用户在提交表单之前了解其提交的数据是否合法以避免不必要的工作。
帖子
68
体力
154
威望
0
发表于 2008-3-27 21:04:44 |显示全部楼层
大家不要搞混了,客户端和服务器端验证的作用是不同的,各司其职,当然不可能完全替代。
客户端验证的最大好处是可以避免错误数据,主要目的是为了提高表单的友好程度,而不是安全性。
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-28 17:35:26 |显示全部楼层
修复了一个bug,你可以直接修改full-validator.js里513-529行的代码为:
  1.   add : function(o, loaded){
  2.    if(!loaded) {
  3.     this.rules = this.rules || [];
  4.     this.rules.push(o);
  5.    } else {
  6.     if(!o.validate) o = ns.Factory.Element.build(o);
  7.     this.addElement(o);
  8.    }
  9.    return this;
  10.   },
  11.   _add : function(){
  12.    if(!this.rules)return;
  13.    for(var i = 0, l = this.rules.length; i < l; i ++) this.add(this.rules[i], true);
  14.    this.rules.empty();
  15.    this.rules = null;
  16.    delete this.rules;
  17.   },
复制代码

或者重新下载:http://wfsr.net/validator/v4/validator.rar
帖子
7
体力
37
威望
0
发表于 2008-3-29 09:22:35 |显示全部楼层
我靠,大家居然都不赞叹,还在这里唧唧歪歪的.

大佛,你的心里一定在流血,对不对~~~
歌者已长息,逝者如斯夫!
帖子
222
体力
423
威望
0
居住地
广东省 深圳市
发表于 2008-3-29 10:45:00 |显示全部楼层
原帖由 WellFrog 于 2008-3-27 10:49 发表


客户端验证是防君子不防小人
浏览器都会有一个“禁止运行网页脚本”的选项
选中后网页脚本失效
如果服务器端没有一套和客户端一样的正则验证,那势必可能出现意料以外的数据

对于想恶意提交的人,这可 ...



表单验证不只是验证数据。。
最重要的是提示用户
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-29 11:39:10 |显示全部楼层
原帖由 FireINwinder 于 2008-3-29 09:22 发表
我靠,大家居然都不赞叹,还在这里唧唧歪歪的.

大佛,你的心里一定在流血,对不对~~~

是啊,滴血呢,为什么就没人提一下意见,老杨你给我提一下
帖子
7
体力
37
威望
0
发表于 2008-3-29 12:35:28 |显示全部楼层
呵呵,我试用一下给你提提意见~~

要不然给你做个第三方配置工具来看看.
歌者已长息,逝者如斯夫!
帖子
7
体力
37
威望
0
发表于 2008-3-29 13:11:30 |显示全部楼层
你的编码用的gb2312,如果改成UTF-8怎么办?
歌者已长息,逝者如斯夫!
帖子
7
体力
37
威望
0
发表于 2008-3-29 14:31:06 |显示全部楼层
还有一个问题,就是最好能封装成相关的控件,比如ASP.NET的控件,这样使用起来会更方便一些.

而且在服务器端只需要判断Page.IsValid就行了.

类似于内置的控件.

在PHP或者是其他的别的网站上,用最常规的js的方式应该就行了.
歌者已长息,逝者如斯夫!
我佛山人 楼主

我佛·山人

荣誉管理  

帖子
2368
体力
22798
威望
85
居住地
北京市 朝阳区
发表于 2008-3-30 01:00:45 |显示全部楼层
1.在线的配置工具正在写:http://www.51code.net/v4/
你给我写个桌面版的就最好了,用delphi,win32平台
2.编码应该不成问题,程序里的中文我已经全部转码了,只要你使用时的配置文件和页面编码一致就OK,不过只是推测,找个时间测试一下看看
3.你只是作为一个.NET开发人员的立场说的,其它每个平台都需要有配合的封装,我也尝试过,1.x版本的时候做了ASP和PHP的,.NET版的一直是我自己用没公开,但是我一个人精力有限啊,要考虑全部开发语法不大现实,所以干脆只做好纯JS的算了
帖子
1600
体力
11339
威望
43
发表于 2008-3-30 11:33:07 |显示全部楼层
原帖由 我佛山人 于 2008-3-29 11:39 发表

是啊,滴血呢,为什么就没人提一下意见,老杨你给我提一下


别着急,好东西!都在研究中呢,有时间遇到了或想到了问题一定得提点意见,特别是在应用中。
您需要登录后才可以回帖 登录 | 注册

Archiver|手机版|安久科技提供CDN|blueidea.com ( 京ICP备05002321号 )  

GMT+8, 2011-12-28 17:08 , Processed in 0.466165 second(s), 16 queries , Gzip On.

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部