知识大全 ASP.NET 实现验证码功能的Web控件

Posted

篇首语:我永远要记得我所想要的。而不是我所恐惧的。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 实现验证码功能的Web控件相关的知识,希望对你有一定的参考价值。

ASP.NET 实现验证码功能的Web控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  的设计方式和设计理念和其他的如Asp Jsp Php Perl等都不一样 几乎是完全的面向对象设计!代码的复用就是其中差异较大的特点之一 除了可以用Include以外 还提供了比较有特点的Web控件 包括 Ascx形式和带设计时支持的控件[本文属于后者] 为了熟悉这些新概念 我自己写了个Web控件     在实际项目中运行使用良好 以后 要有时间 我还将不断改进     ValidateCode控件的使用方法:    第一步     编译我提供的原代码 然后 在 工具栏上 选择 添加/移除项 选中编译好的dll文件     第二步     工具栏上就会多一个Web控件ValidateCode 做好一个Web窗体 在 开发界面上 直接把控件拖到WebForm上 就OK!    第三步     在该控件的GraphicOK事件中获取 验证码的字符信息 用于和用户录入做比较!    最后一步     在网站的根目录下 建一个temp目录(也可以自己指定目录) 用于存放验证码    图片 不用担心 代码会自动删除无用的图片!    原代码如下     using System;  using System Web UI;  using System Web UI WebControls;  using System ComponentModel;  using System IO;  using System Drawing;  using System Drawing Drawing D;  using System Drawing Imaging;    namespace WebValidateCode    /// <summary>  /// ValidateCode 的摘要说明   /// 设计者:王海波   /// </summary>  ///  public enum GraphicType    Jpg =   Gif =   Png =   Bmp =       //[ToolboxBitmap(@ D:\\DotnetApp\\ValidateCode\\ValidateCode bmp ) ] //设置控件在工具箱上的图标  public class ValidateCode : System Web UI WebControls WebControl INamingContainer    private int pCodelen= ;  private int pChartWidth= ;  private int pChartHeight= ;    private GraphicType pChartType;    private string pAuthenCode;    private string pTempImageURLPath= /temp ;  private string pAuthenImageFullname;  private string pAuthenImageFullURL;    //生成校验码的变量 start  private Bitmap validateImage;  private Graphics g;  //生成校验码的变量 End    private TextBox txt=new TextBox();  private System Web UI WebControls Image img= new System Web UI WebControls Image();    #region 定义控件事件    public delegate void GraphicCreated(object sender EventArgs e);  public event EventHandler GraphicOK;  //在校验图片生成结束以后触发    protected virtual void OnGraphicOK(object sender EventArgs e)    if (GraphicOK != null)    //Invokes the delegates   GraphicOK(sender e);        #endregion    #region 控件属性    //生成校验码的长度  [Bindable(true) Browsable(true) Category( Appearance ) DefaultValue(true) Description( 需要验证码的长度 建议在 ~ 位之间! )]  public int CodeLength    get    return pCodelen;      set    pCodelen = value;        //生成校验码的长度  [Bindable(true) Browsable(true) Category( Appearance ) DefaultValue(true) Description( 生成验证码图片的临时存放路径 要求必须是网站下的虚拟目录! )]  public string TempImageURLPath    get    return pTempImageURLPath;      set    pTempImageURLPath = value;        [Bindable(true) Browsable(true) Category( Appearance ) DefaultValue(GraphicType Jpg) Description( 选择生成校验图文件的类型(Jpg;Gif;Png;Bmp)! )]  public GraphicType ChartType    get    return pChartType;      set    pChartType = value;          //生成校验码图片的宽度  public int ChartWidth    get    return pChartWidth;      set    pChartWidth = value;        //生成校验码图片的高度  public int ChartHeight    get    return pChartHeight;      set    pChartHeight = value;        //需要生成的校验码  public string AuthenCode    get    return pAuthenCode;      set    pAuthenCode = value;        #endregion    /// <summary>  /// 将此控件呈现给指定的输出参数   /// </summary>  /// <param name= output > 要写出到的 HTML 编写器 </param>  protected override void Render(HtmlTextWriter output)      System Web UI WebControls Image objImage;  //TextBox objTxt;      //绘制包含的控件  objImage = (System Web UI WebControls Image) Controls[ ];  //objTxt = (TextBox) Controls[ ];    if(pAuthenCode==null)  pAuthenCode=GetValidateCode();    OnGraphicOK(this EventArgs Empty );    GetRandomImage(pAuthenCode);  objImage ImageUrl=pAuthenImageFullURL;    objImage RenderControl(output);        /// <summary>  /// 给控件添加子控件  /// </summary>  protected override void CreateChildControls(  )      //Controls Add(btn);  Controls Add(img);  //Controls Add(txt);      /// <summary>  /// 控件Load时候属性的初始化  /// </summary>  /// <param name= e ></param>  protected override void OnLoad(System EventArgs e)    EraseOldGraphic();  //删除过期的图片      /// <summary>  /// 生成随机的  /// </summary>  private void MakeRandomFileName()    string strRandName=DateTime Now Ticks ToString()+ jpg ;  pAuthenImageFullname=this Page MapPath(TempImageURLPath)+@ \\ +strRandName;  pAuthenImageFullURL=TempImageURLPath+ / +strRandName;        private void GetRandomImage(string strValidateCode)    //生成随即图片的全名 和全URL  MakeRandomFileName();    validateImage = new Bitmap(pChartWidth pChartHeight PixelFormat Format bppRgb); // Format bppRgb);  g = Graphics FromImage(validateImage);    g Clear(Color LightGray) ;    //g DrawString(strValidateCode new Font( 宋体 FontStyle Bold) new SolidBrush(Color DarkRed) new PointF( ));    for(int i= ;i<strValidateCode Length;i++)    Random r = new Random();  PointF startPos=new PointF(r Next( )+(r Next( )*i ) r Next( ) );    g DrawString(strValidateCode Substring(i ) new Font( 宋体 FontStyle Italic) new SolidBrush(Color Blue) startPos);        //g FillRectangle(new LinearGradientBrush(new Point( ) new Point( ) Color FromArgb( ) Color FromArgb( )) );  switch(pChartType)    case GraphicType Jpg:    validateImage Save(pAuthenImageFullname ImageFormat Jpeg);  break;    case GraphicType Gif:    validateImage Save(pAuthenImageFullname ImageFormat Gif);  break;    case GraphicType Png:    validateImage Save(pAuthenImageFullname ImageFormat Png);  break;    case GraphicType Bmp:    validateImage Save(pAuthenImageFullname ImageFormat Bmp);  break;    default:  validateImage Save(pAuthenImageFullname ImageFormat Jpeg);  break;        validateImage Dispose();    g Dispose();        /// <summary>  /// 动态从数字和字母组成的元素中动态选择生成校验码  /// </summary>  private string GetValidateCode() cha138/Article/program/net/201311/13574

相关参考

知识大全 在Asp.net(C#)中添加程序实现验证码功能

在Asp.net(C#)中添加程序实现验证码功能  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&n

知识大全 ASP.NET验证码技术

ASP.NET验证码技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  验证码技术是目前很多WE

知识大全 ASP.NET 做验证码

ASP.NET做验证码  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  显示验证码的界面前台<

知识大全 ASP.NET验证码(.aspx)

ASP.NET验证码(.aspx)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  usingSy

知识大全 ASP.NET 2.0服务器控件之验证控件示例

ASP.NET2.0服务器控件之验证控件示例  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在上

知识大全 基于ASP.NET的Web动态控件创建

基于ASP.NET的Web动态控件创建  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  摘要web

知识大全 当Asp.Net验证控件遇到FCKeditor

当Asp.Net验证控件遇到FCKeditor  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  使

知识大全 ASP.NET常用6种验证控件介绍

ASP.NET常用6种验证控件介绍  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!    Requi

知识大全 ASP.NET开发中的验证码技术

ASP.NET开发中的验证码技术  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs

知识大全 ASP.NET1.1验证码产生的原理及应用

ASP.NET1.1验证码产生的原理及应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ASP