快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

网站设计中表单验证

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

实际上我们还可以写出很多的验证函数,我这里只是列举一二,希望对大家有所帮助。
返回类别: 教程
上一教程: 完整的访问统计程序(三 应用篇)
下一教程: 使用组件封装数据库操作(二)

您可以阅读与"网站设计中表单验证"相关的教程:
· 在ASP网站设计中表单验证
· 用ASP动态生成JAVASCRIPT的表单验证代码
· ASP动态生成的JAVASCRIPT表单验证代码
· 网站设计与维护的三大问题及解决办法
· 在WAP网站上建立反馈表单
    微笑服务 优质保证 索取样品