文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
asp中有关字符编码转换的几个函数
绝妙的asp生成静态页面html函数
Asp计算页面执行时间
一个简单的用存储过程分页
将asp页面转换成htm页面
ASP网站漏洞解析及黑客入侵防范方法
URL编码与SQL注入
几种常用排序算法(asp)
ASP调用带参数存储过程的几种方式
实用的ASP连接数据库的函数
ASP如何获取真实IP地址
ASP中怎么实现SQL数据库备份、恢复
判断Cookies是否处于开启状态
怎样才能将服务器端文件夹下的文件,..
几行Asp代码实现防止表单重复提交
用ASP设计网站在线人数统计程序
asp论坛在线人数统计研究
如何用ASP远程在数据库中创建Table
用ASP调用SQL Server的视图和存储过程
Asp与XML的关系
ASP读取EXCEL
在ASP中使用Oracle数据库技巧
一个通过web.Mail发送邮件的类
几种打开记录集方式的比较
购物车范例(购物车页面 )
如何使用FSO搜索硬盘文件
GB码和BIG5码的互换技术
用ASP开发WEB日期选择器
一个投票系统的源程序(coveryourasp.c..
列出服务器上的打印机


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




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987