asp.net,C#验证码使用

验证码制作使用

1.新建一个web窗体VerifyCode.aspx,在其后台添加以下代码

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

using System.Drawing;

using System.Drawing.Imaging;

using System.Drawing.Text;

 

<summary>

///页面验证码程序

///使用:在页面中加入HTML代码 <imgsrc="VerifyCode.aspx">

///</summary>

public partial class VerifyCode : System.Web.UI.Page

{

    static string[] FontItems = new string[] {   "Arial",

                                                 "Helvetica",

                                                 "Geneva",

                                                 "sans-serif",

                                                 "Verdana"

                                             };

 

    static Brush[] BrushItems = new Brush[] {     Brushes.OliveDrab,

                                                 Brushes.ForestGreen,

                                                 Brushes.DarkCyan,

                                                 Brushes.LightSlateGray,

                                                 Brushes.RoyalBlue,

                                                  Brushes.SlateBlue,

                                                 Brushes.DarkViolet,

                                                 Brushes.MediumVioletRed,

                                                 Brushes.IndianRed,

                                                  Brushes.Firebrick,

                                                 Brushes.Chocolate,

                                                 Brushes.Peru,

                                                 Brushes.Goldenrod

                                            };

 

    static string[] BrushName = new string[] {    "OliveDrab",

                                                 "ForestGreen",

                                                 "DarkCyan",

                                                 "LightSlateGray",

                                                 "RoyalBlue",

                                                 "SlateBlue",

                                                 "DarkViolet",

                                                 "MediumVioletRed",

                                                 "IndianRed",

                                                 "Firebrick",

                                                 "Chocolate",

                                                 "Peru",

                                                 "Goldenrod"

                                             };

 

    private static Color BackColor = Color.White;

    private static Pen BorderColor = Pens.DarkGray;

    private static int Width = 52;

    private static int Height = 21;

 

    private Random _random;

    private string _code;

    private int _brushNameIndex;

 

 

    override protected void OnInit(EventArgs e)

    {

        //

        // CODEGEN: Thiscall is required by the ASP.NET Web Form Designer.

        //

        //InitializeComponent();

        //base.OnInit(e);

    }

 

    /**/

    ///<summary>

    /// Required method forDesigner support - do not modify

    /// the contents ofthis method with the code editor.

    ///</summary>

    private voidInitializeComponent()

    {

        //this.Load += newSystem.EventHandler(this.Page_Load);

    }

 

    ///<summary>

    ///

    ///</summary>

    ///<paramname="sender"></param>

    ///<paramname="e"></param>

    public void Page_Load(object sender, System.EventArgs e)

    {

        if (!IsPostBack)

        {

            // TODO : initialize

            this._random = new Random();

            this._code =GetRandomCode();

            // TODO : useSession["code"] save the VerifyCode

           Session["code"] = this._code;

            // TODO : outputImage

            this.SetPageNoCache();

            this.OnPaint();

        }

    }

    ///<summary>

    ///设置页面不被缓存

    ///</summary>

    private void SetPageNoCache()

    {

       Response.Buffer = true;

       Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);

       Response.Expires = 0;

       Response.CacheControl = "no-cache";

       Response.AppendHeader("Pragma""No-Cache");

    }

    ///<summary>

    ///取得一个 4 位的随机码

    ///</summary>

    ///<returns></returns>

    private string GetRandomCode()

    {

        return Guid.NewGuid().ToString().Substring(0,4);

    }

    ///<summary>

    ///随机取一个字体

    ///</summary>

    ///<returns></returns>

    private Font GetFont()

    {

        int fontIndex =_random.Next(0, FontItems.Length);

        FontStyle fontStyle =GetFontStyle(_random.Next(0, 2));

        return new Font(FontItems[fontIndex],12, fontStyle);

    }

    ///<summary>

    ///取一个字体的样式

    ///</summary>

    ///<paramname="index"></param>

    ///<returns></returns>

    private FontStyle GetFontStyle(int index)

    {

        switch (index)

        {

            case 0:

                return FontStyle.Bold;

            case 1:

                return FontStyle.Italic;

            default:

                return FontStyle.Regular;

        }

    }

    ///<summary>

    ///随机取一个笔刷

    ///</summary>

    ///<returns></returns>

    private Brush GetBrush()

    {

        int brushIndex =_random.Next(0, BrushItems.Length);

       _brushNameIndex = brushIndex;

        returnBrushItems[brushIndex];

    }

    ///<summary>

    ///绘画事件

    ///</summary>

    private void OnPaint()

    {

        Bitmap objBitmap = null;

        Graphics g = null;

 

        try

        {

           objBitmap = new Bitmap(Width, Height);

            g = Graphics.FromImage(objBitmap);

 

           Paint_Background(g);

           Paint_Text(g);

           Paint_TextStain(objBitmap);

           Paint_Border(g);

 

           objBitmap.Save(Response.OutputStream, ImageFormat.Gif);

           Response.ContentType = "image/gif";

        }

        catch { }

        finally

        {

            if (null != objBitmap)

               objBitmap.Dispose();

            if (null != g)

               g.Dispose();

        }

    }

    ///<summary>

    ///绘画背景颜色

    ///</summary>

    ///<paramname="g"></param>

    private void Paint_Background(Graphics g)

    {

       g.Clear(BackColor);

    }

    ///<summary>

    ///绘画边框

    ///</summary>

    ///<paramname="g"></param>

    private void Paint_Border(Graphics g)

    {

       g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1);

    }

    ///<summary>

    ///绘画文字

    ///</summary>

    ///<paramname="g"></param>

    private void Paint_Text(Graphics g)

    {

       g.DrawString(_code, GetFont(), GetBrush(), 3, 1);

    }

    ///<summary>

    ///绘画文字噪音点

    ///</summary>

    ///<paramname="g"></param>

    private void Paint_TextStain(Bitmap b)

    {

        for (int n = 0; n < 30;n++)

        {

            int x =_random.Next(Width);

            int y =_random.Next(Height);

           b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));

        }

}

}

2.在引用页添加以下代码。

<asp:Label ID="LabelCode" runat="server" Text="请输入验证码:" />

<asp:TextBox  ID="TextBoxCode" runat="server" MaxLength="4"/>

<asp:Image ID="getcode" ImageUrl="VerifyCode.aspx" runat="server" />

<a href="javascript:getimgcode()">看不清 </a>

 

3.在此页面<head></head>中添加以下代码。

<script type="text/javascript">

function getimgcode()

{

        var getimagecode =document.getElementById("getcode");

       getimagecode.src = "VerifyCode.aspx";

    }

</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值