分享
 
 
 

网站设计中表单验证

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

一般的动态网站需要通过表单来收集用户信息,或者实现与用户的交互,虽然我们相信绝大多数人士既然选择了填写表单就会认真的完成,但是亦不能避免无聊人士乱填表单,况且即使一个正常用户在填写过程中也会无意识的出现一些填写错误,或者他们忘记了填某些选项。通常为了避免这种情况,开发者会给表单加一个验证的过程,在表单数据提交到服务器之前或者服务器之后对用户填写的数据进行验证,若遇到错误的填写则返回要求用户进行更正。

在ASP中程序员们一般是这样做的:

1、用javascript在客户端进行验证。

2、用vbscript在客户端进行验证。

3、用vbscript在服务器端进行验证。

上面提到了两个不同的环境,服务器端和客户端,客户端验证实际上就是包含在已下载的页面中,当用户提交表单时候,它直接在已下载到本地的页面中调用script来进行验证,这样可以减少服务器端的运算。而服务器端的验证则是将页面提交到服务器处理,服务器上的另一个ASP页面先执行对表单的验证,然后再返回结果到客户端。这样的缺点是每一次验证都要经过服务器,消耗时间较长。但是利用服务器端验证却可以达到较好的验证功能。

本文就是主要讲述ASP中在服务器端的验证。

在了解以下介绍方法之前,你需要想想在表单验证问题中会遇到哪些需要值得我们控制的地方。就像软件工程思想一样,先分析一下要在哪些方面进行验证。

1、要求用户的输入必须是中文(英文或数字)。

2、要求用户的输入必须是有效的邮件地址。

3、对用户输入的数据进行各种不同的限制。

4、限制用户输入的数据量。

5、....

实际上我们在网站设计中还会因情况不同而遇到其他很多不同的问题,需要我们自己去定义一些规定和限制。

下面我们以实例来讲述验证方法。

1、验证输入的数字

假设一个文本框

<form name="form1" method="post" action="">

<input type="text" name="textfield">

</form>

'要求用户必须输入数字

if not isnumeric(Request.Form("textfield")) then

response.write "重新填写"

end if

'要求限制数字长度,如你要用户输入oicq号码

'此例限制了用户的输入只有为4到10位数字才有效

if len(Request.Form("textfield"))>10 or len(Request.Form("textfield"))<4 then

response.write "重新填写"

end if

当然上面用Request.Form和Request是一样的,随便你怎么写了。

2、验证用户输入的邮件地址

'引用一段通用检测函数来说明

'由于检验程序较长,将其定义为一函数来调用

function IsValidEmail(email)

dim names, name, i, c

'Check for valid syntax in an email address.

IsValidEmail = true

names = Split(email, "@")

if UBound(names) <> 1 then

IsValidEmail = false

exit function

end if

for each name in names

if Len(name) <= 0 then

IsValidEmail = false

exit function

end if

for i = 1 to Len(name)

c = Lcase(Mid(name, i, 1))

if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c) then

IsValidEmail = false

exit function

end if

next

if Left(name, 1) = "." or Right(name, 1) = "." then

IsValidEmail = false

exit function

end if

next

if InStr(names(1), ".") <= 0 then

IsValidEmail = false

exit function

end if

i = Len(names(1)) - InStrRev(names(1), ".")

if i <> 2 and i <> 3 then

IsValidEmail = false

exit function

end if

if InStr(email, "..") > 0 then

IsValidEmail = false

end if

end function

'上面的这段函数大家应该都看的懂,当然你可以修改这段代码,使得即使用户输入XXX@CCC.DDD是错误的邮件地址,因为DDD不是一个有效域名。

'引用的时候可以这样写

if IsValidEmail(trim(request("textfield")))=false then

response.write "重新填写"

end if

3、验证为空的表单单元

有的信息是要求用户必须填写的,所以不允许为空,因此当用户输入为空的时候需要提示。

'对为空单元的处理

if Request.Form("textfield")="" then

Response.write "填写为空"

end if

4、判断用户输入的是不是一个日期

首先明白日期值格式2002-11-19

'直接判断一个值是否是日期

if not isdate(Request.Form("textfield")) then

Response.write "日期填写出错"

end if

而我们在设计网站时候往往用三个下拉框来实现年、月、日三个不同选项,如何将这三个值联系起来,并且进行验证呢?

首先当然要建立三个下拉框了,分别命名表单名为date,month,year,然后就是后台的处理了,因为先前我们在前台获取了date,month,year这三个传递过来的值,所以我们必须把他们连接起来合成一个变量才能验证和存入数据库。连接成标准日期格式表达式可以这么写:

birthday=trim(Request.Form("year"))&"-"&trim(Request.Form("month"))&"-"&trim(Request.Form("date"))

验证已经转换的输入是否为合法日期可以使用isdate函数:

if not isdate(birthday) then

response.write "错误"

end if

5、不允许用户输入某些特殊字符

在这里我们假设传递的值是content,我们不允许输入的值是=和%

if Instr(request("content"),"=")>0 or Instr(request("content"),"%")>0

then

response.write "不能输入=和%"

end if

实际上我们还可以写出很多的验证函数,我这里只是列举一二,希望对大家有所帮助。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有