2007-11-16
表单验证
关键字: 验证
表单验证
除非只是一个发布资源的web应用,否则很难不和用户进行交互。
在交互的过程中就带来了一个验证用户输入的问题。
web应用是通过http协议和用户进行信息传输的,所以服务器端和客户端相互之间都是透明的,只存在符合http协议的数据传输,不用知道对方是什么。
严格来讲,由于客户端无论什么数据都有可能传送到服务器端(自己写客户端,什么数据都可以传送),所以在服务器端对数据进行验证是必须的。但是由于大多数用户还是使用IE,Firefox此类的通用浏览器,所以可以先在浏览器上对数据进行一次验证,然后再把数据传送给服务器端,以减少浏览器和服务器端的通信次数。
1.浏览器端验证
在浏览器端进行验证,是为了避免提交无效数据,以至于增加和服务器的连接次数。这里验证的只是,数据的规范性,而不是验证数据的合法性。打个比方,用户登录时,输入用户名和密码,客户端只能验证用户是否进行了输入,或者输入是否规范,但是用户名是否存在,密码是否正确,这就是客户端无法验证的了的。
客户端的验证主要是通过通用浏览器普遍都支持的javascript来进行的,在提交之前,根据设定好的规则,对表单数据统一进行验证,一经有不合格数据,立刻提醒用户,并取消提交。
2.服务器端验证
由于服务器并不知道客户端的行为,也就是说,对于服务器端来说,客户端是不可信的,所以当服务器接收到客户端发送过来的数据后,还是要进行一次验证,才能够保证数据的规范性。
服务器端的验证就是在处理数据之前,根据预先设定好的规则(这个规则通常是和客户端验证的规则是同样的),先把数据的规范性验证一遍。
为了得到良好的用户体验,以及安全性,两种验证是必不可少的。
从技术上来讲,两端都可以使用正则表达式来进行验证。
客户端主要的验证规则
1.邮件:
2.字符:
3.字符长度
//双字节字符按一个字符计算
//双字节字符按两个字符计算
4.日期
除非只是一个发布资源的web应用,否则很难不和用户进行交互。
在交互的过程中就带来了一个验证用户输入的问题。
web应用是通过http协议和用户进行信息传输的,所以服务器端和客户端相互之间都是透明的,只存在符合http协议的数据传输,不用知道对方是什么。
严格来讲,由于客户端无论什么数据都有可能传送到服务器端(自己写客户端,什么数据都可以传送),所以在服务器端对数据进行验证是必须的。但是由于大多数用户还是使用IE,Firefox此类的通用浏览器,所以可以先在浏览器上对数据进行一次验证,然后再把数据传送给服务器端,以减少浏览器和服务器端的通信次数。
1.浏览器端验证
在浏览器端进行验证,是为了避免提交无效数据,以至于增加和服务器的连接次数。这里验证的只是,数据的规范性,而不是验证数据的合法性。打个比方,用户登录时,输入用户名和密码,客户端只能验证用户是否进行了输入,或者输入是否规范,但是用户名是否存在,密码是否正确,这就是客户端无法验证的了的。
客户端的验证主要是通过通用浏览器普遍都支持的javascript来进行的,在提交之前,根据设定好的规则,对表单数据统一进行验证,一经有不合格数据,立刻提醒用户,并取消提交。
2.服务器端验证
由于服务器并不知道客户端的行为,也就是说,对于服务器端来说,客户端是不可信的,所以当服务器接收到客户端发送过来的数据后,还是要进行一次验证,才能够保证数据的规范性。
服务器端的验证就是在处理数据之前,根据预先设定好的规则(这个规则通常是和客户端验证的规则是同样的),先把数据的规范性验证一遍。
为了得到良好的用户体验,以及安全性,两种验证是必不可少的。
从技术上来讲,两端都可以使用正则表达式来进行验证。
客户端主要的验证规则
1.邮件:
/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/
2.字符:
/^[A-Za-z]+$/
3.字符长度
//双字节字符按一个字符计算
“hello,你好”.length;
//双字节字符按两个字符计算
“hello,你好”.replace(/[^\x00-\xff]/g,"**").length;
4.日期
function checkDate(theDate){
var reg = /^\d{4}-((0{0,1}[1-9]{1})|(1[0-2]{1}))-((0{0,1}[1-9]{1})|([1-2]{1}[0-9]{1})|(3[0-1]{1}))$/;
if(!reg.test(theDate)){
return false;//格式不对
}
var ymd=theDate.split("-");
var y=parseInt(ymd[0]);
var m=parseInt(ymd[1]);
var d=parseInt(ymd[2]);
var date = new Date(y,m-1,d);
if(date.getFullYear()!=y || date.getMonth()!=(m-1) || date.getDate()!=d){
return false;//日期不存在
}
return true;
}
发表评论
- 浏览: 11597 次
- 性别:

- 来自: 黑洞

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
打破时间的束缚(转)
我对以下方面有一些疑虑:1、如何降低协作的成本、加快沟通的速度?2、是否每个人的 ...
-- by outrace -
打破时间的束缚(转)
weiqingfei 写道ouspec 写道这样做会使协作成为问题,比如大家需要 ...
-- by zerker -
打破时间的束缚(转)
ouspec 写道这样做会使协作成为问题,比如大家需要同时来做一件事情的,同时在 ...
-- by weiqingfei -
打破时间的束缚(转)
这样做会使协作成为问题,比如大家需要同时来做一件事情的,同时在线沟通是很重要的。 ...
-- by ouspec -
打破时间的束缚(转)
他们这样做是对的,工作业绩是以成果论的,这是所有工作的共同特点。 只不过表现形式 ...
-- by flyingbug






评论排行榜