ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Asp.net(C#)实现验证码功能

Asp.net(C#)实现验证码功能

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-02-13 14:06:35 0 删除 编辑

新建一个专门用来创建验证码图片的页面ValidateCode.aspx
它的后台cs文件代码如下:
PageLoad

Codeprivate void Page_Load(object sender, System.EventArgs e){    string checkCode = CreateRandomCode(4);    Session["CheckCode"] = checkCode;    CreateImage(checkCode);}

其中CreateRandomCode是自定义的函数,参数代表验证码位数

Codeprivate string CreateRandomCode(int codeCount){    string allChar = "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" ;    string[] allCharArray = allChar.Split(',');    string randomCode = "";    int temp = -1;    Random rand = new Random();    for(int i = 0; i < codeCount; i++)    {        if(temp != -1)        {            rand = new Random(i*temp*((int)DateTime.Now.Ticks));        }        int t = rand.Next(35);        if(temp == t)        {            return CreateRandomCode(codeCount);        }        temp = t;        randomCode += allCharArray[t];    }    return randomCode;}

CreateImage也是一个自定义的函数,用于生成图

Codeprivate void CreateImage(string checkCode){    int iwidth = (int)(checkCode.Length * 11.5);    System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);    Graphics g = Graphics.FromImage(image);    Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);    Brush b = new System.Drawing.SolidBrush(Color.White);    //g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);    g.Clear(Color.Blue);    g.DrawString(checkCode, f, b, 3, 3);    Pen blackPen = new Pen(Color.Black, 0);    Random rand = new Random();    for (int i=0;i<5;i++)    {        int y = rand.Next(image.Height);        g.DrawLine(blackPen,0,y,image.Width,y);    }        System.IO.MemoryStream ms = new System.IO.MemoryStream();    image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);    Response.ClearContent();    Response.ContentType = "image/Jpeg";    Response.BinaryWrite(ms.ToArray());    g.Dispose();    image.Dispose();}


//g.FillRectangle(new System.Drawing.SolidBrush(Color.Blue),0,0,image.Width, image.Height);
g.Clear(Color.Blue);
这两种方法都可以改变生成图片的背景颜色。下面那个for循环用来生成一些随机的水平线

在需要用到验证码的页面添加一个控件即可,但是要把ImageUrl指向生成验证码的页面

Code

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-551821/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5309396