动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > ASP.NET实例 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

在ASP.NET下实现数字和字符相混合的验证码


发表日期:2003-12-30


    经常在论坛里看到有问怎么实现验证码的帖子,其实关于验证码的文章在CSDN,DEV-CLUB等网站上都有很多,但是很多文章只讲诉了如何输出一个随机生成数字或字符的图象,当然了,这个是验证码的核心了,但是对很多asp.net的初学者来说,怎么使用它生成的图象又成了一个问题(论坛有不少问这个的),这也是我写本文的一个原因.
    言归正传,关于验证码的原理,我就不多说了,大家可以参见其他文章,文末附有完整的实例代码,里面有详细的注释,你可以跳过解说文字,直接使用
    首先,我要简要说说session和ViewState的用法,因为后面会用到它
       把数据存储在Session中:Session("key")="test"
       从Session取值:dim testvalue as string=Session("key")
      类似的:
       把数据存储在ViewState中:ViewState("key")="test"
       从ViewState中取值:dim testvalue as string=ViewState("key")
    关于ViewState的更详细的资料,你可以参看MSDN的<<ASP.NET ViewState 初探>>一文
      百闻不如一见,有时代码本身就比任何解说更有表现力,所以在此就不对代码解说太多了,本文实现的验证码需要用到两个文件:
       gif.aspx           该文件用于生成验证码
       ValidateCode.aspx  该文件用来测试验证码(即如何使用)
   下面给出gif.aspx的完整代码:
<%@ import namespace="System"%>
<%@ import namespace="System.io"%>
<%@ import namespace="System.Drawing"%>
<%@ import namespace="System.Drawing.Imaging"%>
<script language="vb" runat="server">
 Sub Page_Load(Sender as object,e as eventargs)
    'RndNum是一个自定义函数
    dim VNum as string=RndNum(4)
    Session("VNum")=VNum
    ValidateCode(VNum)
 End Sub
 '生成图象验证码函数
 Sub ValidateCode(VNum)
   Dim Img as System.Drawing.Bitmap
   Dim g as Graphics
   Dim ms as MemoryStream
   dim gheight as integer=Int(Len(VNum)*11.5)
   'gheight为图片宽度,根据字符长度自动更改图片宽度
   img=new BitMap(Gheight,20)
   g=Graphics.FromImage(img)
   g.DrawString(VNum,(New Font("Arial",10)),(New SolidBrush(color.blue)),3,3)'在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
   ms=New MemoryStream()
   img.Save(ms,ImageFormat.Png)
   Response.ClearContent() '需要输出图象信息 要修改HTTP头
   Response.ContentType="image/Png"
   Response.BinaryWrite(ms.ToArray())
   g.Dispose()
   img.Dispose()
   Response.End()
 End Sub
  '--------------------------------------------
  '函数名称:RndNum
  '函数参数:VcodeNum--设定返回随机字符串的位数
  '函数功能:产生数字和字符混合的随机字符串
  Function RndNum(VcodeNum)
    dim Vchar as string="0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,W,X,Y,Z"
    dim VcArray() as string=split(Vchar,",") '将字符串生成数组
    dim VNum as string=""
    dim i as byte
    For i=1 to VcodeNum
      Randomize
      VNum=VNum & VcArray(Int(35*Rnd)) '数组一般从0开始读取,所以这里为35*Rnd
    Next
    Return VNum
  End Function
</script>
那么又应该如何使用该文件生成的图象验证码,看这句代码:
 <asp:Image id="Image1" runat="server" ImageUrl="gif.aspx" />
这就是用来显示验证码的Image控件,你可以把它放在任何你喜欢的地方,下面的给出详细的使用代码,你把它保存为ValidateCode.aspx,并把它和gif.aspx放在同一目录下,在浏览器中打开ValidateCode.aspx,就可以测试它的效果了:
<script language="vb" Runat="Server">
  Sub Page_Load(Sender as object,e as eventargs)
      dim VNum as string=Session("VNum")
      Session.Abandon()
      ViewState("VNum")=VNum
  End Sub
  '下面的事件代码是用来测试验证码,可以根据需要更改
  Sub btnSubmit_click(sender as object,e as eventargs)
      '判断输入的验证码与所给是否相同
      If txtValidateCode.text=Cstr(ViewState("VNum")) then
          lblShow.text="<font color='red'>提示:验证通过</font>"
      Else
       lblShow.text="所填写的验证码与所给的不符"
      End If
  End Sub
</script>
<html>
<body>
<form runat="server">
  <div align="center">
    <table width="750">
      <!--DWLayoutTable-->
      <tr>
        <td width="256" height="46">&nbsp; </td>
        <td width="9">&nbsp;</td>
        <td width="88">&nbsp;</td>
        <td width="87">&nbsp;</td>
        <td width="100">&nbsp;</td>
        <td width="68">&nbsp;</td>
        <td width="97">&nbsp;</td>
      </tr>
      <tr>
        <td height="21"></td>
        <td></td>
        <td colspan="3" valign="top"><asp:label ID="lblShow" runat="server"></asp:label></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="14"></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
      </tr>
      <tr>
        <td height="21">&nbsp;</td>
        <td colspan="2" valign="middle">验证码:</td>
        <td valign="top"><asp:Image id="Image1" runat="server" ImageUrl="gif.aspx" /></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="20">&nbsp;</td>
        <td colspan="2" valign="top">输入验证码:</td>
        <td valign="top"><asp:textbox ID="txtValidateCode" runat="server" TextMode="SingleLine" /></td>
        <td colspan="2" valign="middle"><font color="#FF0000" size="2">*注意:区分大小写</font></td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="25">&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
      <tr>
        <td height="19">&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td valign="top"><asp:button ID="btnSubmit" runat="server" Text="比较" onclick="btnSubmit_click" /></td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
      </tr>
    </table>
  </div>
</form>
</body>
</html>
关注此文的读者还看过:
·2012-5-21 15:54:58 基于asp.net的webmenu的数据操作2
·2012-5-21 15:50:00 ASP.NET中利用Crystal Report创建图表
·2012-5-21 15:47:28 检测是否还有黑客代码的asp.net函数
·2012-5-21 15:46:26 基于asp.net的webmenu的数据操作3
·2012-5-21 15:44:35 ASP.NET结合存储过程写的通用搜索分页程序
·2012-5-21 15:43:37 XML、DataSet、DataGrid结合写成广告管理程序(一)
·2012-5-21 15:36:02 [视频教程]新科海_asp.net会员系统开发视频教程5
·2012-5-21 15:22:14 在.NET 应用程序中用System.Web.Mail 发送电子邮件
·2012-5-21 15:06:57 C#+ASP.NET开发基于Web的RSS阅读器
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
Asp.net源码推荐
·《安财学报》在线投稿和稿件处理
·PowerTalkBox即时通讯源码(改进
·邮件批量发送器(含源码)
·pagelist v1.1
·E商企业产品发布系统.NET版
·新普网络商城XpShop.net v5.1 英
·漂亮实用的自定义对话框源码及D
·ASP.NET动态模板解析技术 v1.0
·X3BLOG(ASP.NET开源多用户博客系
·景德镇市公交通查询系统源码
·ASP.NET简洁论坛源代码
·网奇E游通旅游网站建设系统 v1.
项目外包信息
·汽车配件网站制作 50000元
·整站SEO优化
·课件门户网程序
·求长期合作网站设计制作高手
·公司网站重新改版 8000元
·asp企业网站小改动
·网站flash片头
·文化传播公司网站设计稿
·UI界面设计
·产品外观改版设计 15000元
·照明灯具网站设计 10000元
·求长期合作网站设计制作高手
·做B2C网站 20000元
·Android或QT软硬件平台设计(工
·网站首页FLASH
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<ASP.NET实例>的内容


网络编程文章分类
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索|酒店预订|机票预订
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号