菜鸟学ASP.NET之验证码生成

验证码在网站建设中的重要作用就不用我说了,如果不了解去问问度娘。今天就来简单介绍下ASP.NET下简单、实用的验证码编程。

先给大家看看效果:

怎么样,机器是不是很难识别。

首先,打开VS,在项目中右键、添加一个WEB窗体,在这里我们起名:VCode

打开VCode.aspx的后台代码。

直接上代码吧:

 protected void Page_Load(object sender, EventArgs e)
        {
            string str = string.Empty;
            Color[] colorArray = new Color[] { Color.FromArgb(0x7c, 0xb5, 0xec), Color.FromArgb(0x43, 0x43, 0x48) };
            string[] strArray = new string[] { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" };
            char[] chArray = new char[] { 
            '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 random = new Random();
            for (int i = 0; i < 4; i++)
            {
                str = str + chArray[random.Next(chArray.Length)];
            }
            Bitmap image = new Bitmap(80, 0x19);
            Graphics graphics = Graphics.FromImage(image);
            graphics.Clear(Color.FromArgb(0xe2, 0xe2, 0xe2));
            for (int j = 0; j < 5; j++)
            {
                int num3 = random.Next(100);
                int num4 = random.Next(40);
                int num5 = random.Next(100);
                int num6 = random.Next(40);
                Color color = colorArray[random.Next(colorArray.Length)];
                graphics.DrawLine(new Pen(color), num3, num4, num5, num6);
            }
            for (int k = 0; k < str.Length; k++)
            {
                string familyName = strArray[random.Next(strArray.Length)];
                Font font = new Font(familyName, 14f);
                Color color2 = colorArray[random.Next(colorArray.Length)];
                graphics.DrawString(str[k].ToString(), font, new SolidBrush(color2), (float)((k * 15f) + 8f), (float)3f);
            }
            base.Response.Buffer = true;
            base.Response.ExpiresAbsolute = DateTime.Now.AddMilliseconds(0.0);
            base.Response.Expires = 0;
            base.Response.CacheControl = "no-cache";
            base.Response.AppendHeader("Pragma", "No-Cache");
            MemoryStream stream = new MemoryStream();
            try
            {
                image.Save(stream, ImageFormat.Png);
                base.Response.ClearContent();
                base.Response.ContentType = "image/Png";
                base.Response.BinaryWrite(stream.ToArray());
            }
            finally
            {
                image.Dispose();
                graphics.Dispose();
            }
            //this.Session["CheckCode"] = str;  把生成的验证码放在Session中
        }

先按F11测试下看看,是不是很有成就感,按F5刷新下看看:

当然,验证码制作成功只是第一步,我们还要把文件引用到具体的页面中,把生成的字符串放在session中去对比。

猜你喜欢

转载自blog.csdn.net/u013948187/article/details/65934719
今日推荐