【asp源码栏目提醒】:网学会员鉴于大家对asp源码十分关注,论文会员在此为大家搜集整理了“ASP如何在服务器端检验表单的合法性 - 企业软件开发”一文,供大家参考学习
ASP如何在服务器端检验表单的合法性 表单是客户端浏览器与服务器交互数据重要对象如何使表单信息符合我们的规范要求把有用的信息提交到服务器成为任何一个站点重要项目。
当然你可以使用DW MX里的“行为”不是服务器行为来生成JS代码检查表单这是在客户端执行的如果用户的浏览器版本过低可能会逃过客户端检验直接提交到服务器了假若你的数据库字段设为不允许为空那么就会报错这倒没什么数据插不入了没关系关键是这样会损害我们站点的声誉说我们的技术水平低让人笑掉大牙。
我并不是说这样不好客户端检验表单会减少对服务器资源占用本文介绍的是如何在服务器端检验表单的与客户端无关任何不合法的信息均被拒之门外。
最好两种方法都用逃过了客户端还有在服务器端“设卡”彻底检验一次任何非法信息都难逃我之眼耳。
准备好“架生”了吗启动你的DW MX打开你的注册页依照本文介绍的方法给你的注册页进行“小手术”可以不费力气地达到目的。
以下例子只要提供代码使用了一些
ASP内置函数具体工作原理不再细讲读者可根据注释自己理解代码执行原理。
了解表单常用来提交那种信息 纯数字类型数据除数值型数字外不允许包含任何文本字符 纯文本类型数据可以是任何字符 电子邮箱地址必须有“”和“.”这两个符号格式abc7294163.com 电话号码包括区号格式020-8574256 日期时间格式:2004-4-22 16:25:15 本来还有一个要求就是限制只填中文或英文考虑到大家都是中华民族子女没有必要把这点也限制了填英文就不准填中文所以本文没有介绍这点。
我的要求就是以上5点任何一条信息都必须是合法的才能插入到数据库中。
一、检查文本域信息是否为数值型数据 文本域名称 Number 按扭我称 sub 要求只能输入数字类型数据 源程序 功能扩展 1限制数字位数 要求用户输入的数字不能小于6位和大于12位 源程序 以上代码用于检查文本或文本区域字符数。
2过滤输入特殊字符 要求不能输入“”“”“”“”“”“/”/“”“”等字符 方法一用replace函数删除这些特殊字符 如果要想过滤更多的字符text2 replacetext2/增加这句即可把“/”换成你想要过滤的字符。
方法二用Instr函数阻止含有这些字符的文本通过检验 要求不能含有上述特殊字符 对于邮箱地址格式的检验这是比较简单的方法实际上程序只能对地址格式进行检验究竟地址是否存在程序就无能为力了。
比较好的办法是用户注册后成功后用他提供的邮箱地址把密码发送到他的邮箱并提示他请在规定时间内打开邮箱取出密码激活帐号否则系统将删除他的注册信息。
当然如果你的站点访问量很大经常有一些无聊之人把一些不存在的信息插入你的数据库如果你一条一条删必把人累死。
可用程序检测过规定时间没有激活账号的自动删除过期的记录。
这个功能可以使用COMMAND命令实现。
以上代码放在HTML标签的上面用来输出提示信息这个要放在标签内的任何须要显示出错信息的地方。
四、检查文本域的值是否包含区号间隔符 如格式020-8956236 要求必须填入区号 源程序 文本域名称 Tel 按扭名称 Sub 0 then检查号码中是否含有“-” OFFNOTrue打开OFFNO用此变量判断执行插入记录程序 text4TelTXT else text4对不起必须输入区号 end if else text4对不起电话号码输入不能为空 end if end if 以上代码只要检查号码中是否含有“-”这个间隔符没的话即提示输入区号。
功能扩展 1在上例基础上限制区号位数最小不能少于3位最大不能多于4位并且区号的第一位数必须是“0”电话号码最少不能小于5位最大不能多于8位必须全部为数字。
源程序 经过此段程序检验电话号码绝对符合要求并且会非常聪地告诉操作者错在那里了。
2如果是手机号码必须为11位不允许有“-”间隔符号码必须为数字。
要求手机号码数字位数不能少于10位必须是数字不允许有其它字符 源程序请参考第一例。
以上代码放在HTML标签的上面用来输出提示信息这个要放在标签内的任何须要显示出错信息的地方。
五、检验表单文本域的值是否为合法日期时间格式 要求日期格式2004-4-22 22:12:54 或 2004/4/22 22:12:54 文本域名称 tima 按扭名称 Sub 源程序 1 and Instrtxtemail.0 and Instrtxtemail0 then OFFNO3True打开OFFNO用此变量判断执行插入记录程序 else text3对不起你输入的电子邮箱地址格式不正确或为空 end if 检查QQ号码是否为数字 dim NOber声明变量 dim text输入信息 NOberrequest.formQQ把文本域赋值给NOber变量 if NOber then当文本域内容为空时 text对不起QQ不能为空输出提示信息 elseif IsnumericNOberTrue then当输入的是数字的时结果为真 if lenNOber6 then用LEN函数检文本域字节数是否在6至12内 if InstrNOber.0 then判断文本域的值是否带有小数点 OFFNO4True打开OFFNO用此变量判断执行插入记录程序 else text4对不起QQ不能带有小数点 end if else text4对不起QQ号码不能大于15位和小于6位 end if else最后文本域不是数字格式输出出错信息 text4对不起QQ号码必须是数字 end if表单检验结束 检电话号码格式是否正确 dim TelTXT dim text5 TelTXTrequest.formTel if TelTXT then当值不为空时向下执行 if InstrTelTXT-0 then检查号码中是否含有“-”有的向下执行 if IsnumericreplaceTelTXT-True then删除“-”然后检查是否数字是数字的话向下执行 if InstrTelTXT-3 and InstrTelTXT-5 and lenTelTXT-InstrTelTXT-恭喜注册成功 ... 如果你用的是DW MX的“插入记录”行为请找到两句代码 If CStrRequestMM_insert form1 Then 代码是相同的只不过有两句把它都修改成 If CStrRequestMM_insert form1 and OFFNO1True and OFFNO2True and OFFNO3True and OFFNO4True and OFFNO5True and OFFNO6True then 就OK了。
做成功了吗做成了叫你的朋友帮你测试一下别忘了在你朋友面前自夸一下“俺的技术又更上一层楼了”哈哈。