asp.net(C#) 生成随机验证码的代码

常用的生成验证码程序 ,图片效果如下:
   
源程序如下:


代码如下:

using System; 
using System.IO; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.Text; 
using System.Collections; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using System.Web.UI.HtmlControls; 
/**//// <summary> 
///  
/// ** asp.net(C#) 生成验证码 ** 
///  
///  File: GenerateCheckCode.aspx.cs 
///  
///  Author: 周振兴 (Zxjay 飘遥) 
///  
///  E-Mail: tda7264@163.com 
///  
///  Date: 07-04-10 
///  
/// </summary> 
public partial class GenerateCheckCode : System.Web.UI.Page 
...{ 
    protected void Page_Load(object sender, EventArgs e) 
    ...{ 
        string chkCode = string.Empty; 
        //颜色列表,用于验证码、噪线、噪点 
        Color[] color =...{ Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.Brown, Color.DarkBlue }; 
        //字体列表,用于验证码 
        string[] font =...{ "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" }; 
        //验证码的字符集,去掉了一些容易混淆的字符 
        char[] character =...{ '2', '3', '4', '5', '6', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'R', 'S', 'T', 'W', 'X', 'Y' }; 
        Random rnd = new Random(); 
        //生成验证码字符串 
        for (int i = 0; i < 4; i++) 
        ...{ 
            chkCode += character[rnd.Next(character.Length)]; 
        } 
        Bitmap bmp = new Bitmap(100, 40); 
        Graphics g = Graphics.FromImage(bmp); 
        g.Clear(Color.White); 
        //画噪线 
        for (int i = 0; i < 10; i++) 
        ...{ 
            int x1 = rnd.Next(100); 
            int y1 = rnd.Next(40); 
            int x2 = rnd.Next(100); 
            int y2 = rnd.Next(40); 
            Color clr = color[rnd.Next(color.Length)]; 
            g.DrawLine(new Pen(clr), x1, y1, x2, y2); 
        } 
        //画验证码字符串 
        for (int i = 0; i < chkCode.Length; i++) 
        ...{ 
            string fnt = font[rnd.Next(font.Length)]; 
            Font ft = new Font(fnt, 18); 
            Color clr = color[rnd.Next(color.Length)]; 
            g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 20 + 8, (float)8); 
        } 
        //画噪点 
        for (int i = 0; i < 100; i++) 
        ...{ 
            int x = rnd.Next(bmp.Width); 
            int y = rnd.Next(bmp.Height); 
            Color clr = color[rnd.Next(color.Length)]; 
            bmp.SetPixel(x, y, clr); 
        } 
        //清除该页输出缓存,设置该页无缓存 
        Response.Buffer = true; 
        Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0); 
        Response.Expires = 0; 
        Response.CacheControl = "no-cache"; 
        Response.AppendHeader("Pragma", "No-Cache"); 
        //将验证码图片写入内存流,并将其以 "image/Png" 格式输出 
        MemoryStream ms = new MemoryStream(); 
        try 
        ...{ 
            bmp.Save(ms, ImageFormat.Png); 
            Response.ClearContent(); 
            Response.ContentType = "image/Png"; 
            Response.BinaryWrite(ms.ToArray()); 
        } 
        finally 
        ...{ 
            //显式释放资源 
            bmp.Dispose(); 
            g.Dispose(); 
        } 
    } 
}

使用方法如下:
新建名为 GenerateCheckCode.aspx 的文件,将上述代码拷贝到代码文件 GenerateCheckCode.aspx.cs 
在需要验证码的地方放置语句 <asp:Image ID="img1" runat="server" ImageUrl="~/GenerateCheckCode.aspx" /> 即可。

(0)

相关推荐

  • asp.net创建位图生成验证图片类(验证码类)

    代码: 复制代码 代码如下: public void ProcessRequest(HttpContext context){context.Response.ContentType = "image/jpeg";//创建位图,并且给指定边框的宽高using (Image img=new Bitmap(80,25)){ //创建画家对象,在img对象画字符串using (Graphics g=Graphics.FromImage(img)){ //设置位图的背景颜色,默认是黑色g.Cl

  • asp.net 验证码生成和刷新及验证

    验证码技术是为了防止暴力破解等而设定的.现在一般的网站注册等都提供验证码功能,特别是腾讯更是长长的一串.文中参考了别人的代码.有了就没有必要再写了.可以读一下.不过我测试时发现了两次PageLoad的问题.注释了两句即可.同时修改了namespaces.同时提供完整的验证说明:1 新建VerifyCode.aspx cs文件代码如下: 复制代码 代码如下: using System; using System.Collections; using System.ComponentModel; u

  • ASP.NET生成图形验证码的方法详解

    本文实例讲述了ASP.NET生成图形验证码的方法.分享给大家供大家参考,具体如下: 通常生成一个图形验证码主要 有3个步骤: (1)随机产生一个长度为N的随机字符串,N的值可由开发可由开发人员自行设置.该字符串可以包含数字.字母等. (2)将随机生成的字符串创建成图片,并显示. (3)保存验证码. 新建一个页面为default.aspx,  放置一个TextBox控件和一个Image控件,TextBox控件用于输入生成的字符串,Image控件用于显示字符串,它的图片就为生成的图形验证码image

  • asp.net生成字母和数字混合图形验证码

    验证码技术是网站开发过程中比较重要的技术,可以防止非法人员利用注册机或者登陆工具来攻击我们的网站.下面是效果图: 具体实现方法如下: 1.主要思路是:引用Using System.Drawing命名空间,利用Graphics的FromImage方法创建一个画布,同时设置画布的宽和高,然后通过Graphics类 的DrawString方法随机生成的字符串绘制到画布中,绘制验证码的同时,在画布中利用SetPixel方法绘制一些色点,从而防止非法人员利用机器 人来进行登陆.当我们绘制验证码完毕后,在需

  • asp.net验证码图片生成示例

    验证码是一张图片.我们需要在前台代码中写一段<img>,src指向一张页面(ValidateImage.aspx). 复制代码 代码如下: <script language="javascript"> function changeImg() {            $("#imgCheckNo").attr("src", "ValidateImage.aspx?r=" + getRandom(999

  • asp.net使用ashx生成图形验证码的方法示例

    本文实例讲述了asp.net使用ashx生成图形验证码的方法.分享给大家供大家参考,具体如下: 验证码的好处不用我多说,你们都懂的.我在网上看到有人把验证码直接写在aspx页面里,也就是说这种方式请求验证码等于请求一个页面,这样做很不科学.如下所示 <form id="form1" runat="server"> <div> <asp:Image ID="Image1" runat="server"

  • ASP.NET中画图形验证码的实现代码

    本文给大家分享一段asp.net代码实现画图形验证码功能,代码简单易懂,具体代码如下所示: context.Response.ContentType = "image/jpeg"; //生成随机的中文验证码 string yzm = "人口手大小多少上中下男女天地会反清复明杨中科小宝双儿命名空间语现在明天来多个的我山东河北南固安北京南昌东海西安是沙河高教园学" + "木禾上下土个八入大天人火文六七儿九无口日中了子门月不开四五目耳头米见白田电也长山出飞马鸟云

  • Asp.net开发之webform图片水印和图片验证码的实现方法

    两者都需要引入命名空间:using System.Drawing; 一.图片水印 前台Photoshuiyin.aspx代码: <div> <asp:FileUpload ID="FileUpload1" runat="server" /> <asp:Button ID="Button1" runat="server" Text="上传" /><br /> &

  • asp.net 图片验证码的HtmlHelper

    一个图片验证码的HtmlHelper,原来的调用代码如下: 复制代码 代码如下: <img id="validateCode" mailto:src='@Url.Action(%22GetValidateCode%22)'/> <script language="javascript" type="text/javascript"> $(document).ready(function () { $("#vali

  • Asp.net Web Api实现图片点击式图片验证码功能

    现在验证码的形式越来越丰富,今天要实现的是在点击图片中的文字来进行校验的验证码,如图 这种验证码验证是验证鼠标是否选中了图片中文字的位置,以及选择的顺序,产生验证码的时候可以提供一组底图,然后随机获取一张图片,随机选取几个字,然后把文字的顺序打乱,分别随机放到图片的一个位置上,然后记录文字的位置和顺序,验证的时候验证一下文字的位置和顺序即可 验证码图片的类 /// <summary> /// 二维码图片 /// </summary> public class VerCodePic

  • ASP.NET MVC验证码功能实现代码

    前台 复制代码 代码如下: <img id="vcodeimg" src="/Home/VCode" width="70"                                    height="25" />                                 <span                                    style="cursor: p

随机推荐