2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 如何使用ASP.NET实现生成验证码功能的实例代码

如何使用ASP.NET实现生成验证码功能的实例代码

时间:2022-12-27 15:48:37

相关推荐

如何使用ASP.NET实现生成验证码功能的实例代码

后端开发|C#.Net教程

,生成,实现

后端开发-C#.Net教程生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到Session里去,然后验证用户输入的内容是否与Session中的验证码相符即可。

优惠券源码php免费下载,ubuntu怎么导入ssd,tomcat配置相对路径,爬虫怎么跳过反爬虫的验证码,php流程控制条件语句,上海seo 舆情lzw

效果图:用户可以点击切换验证码信息。

特效php网页源码,ubuntu显卡风扇转速,tomcat8跨域配置,猫眼python爬虫,通过PHP学会了什么,_SEO_Xlzw

php微商城完整源码,vscode 工具栏,多终端ubuntu,tomcat系统服务es,sqlite3表放入内存,脊针爬虫插孢子爬虫,开发php的ide,汕头长沙seo优化团队,学校网站 aspx源码,免费政工网页模板下载lzw

一般处理程序:CheckCodeHandler.cs

using System;using System.Web;using System.Text;using System.Drawing;using System.Web.SessionState;public class CheckCodeHandler : IHttpHandler,IRequiresSessionState{ //产生验证码的字符集 public string charcode = "2,3,4,5,6,8,9,A,B,C,D,E,F,G,H,J,K,M,N,P,R,S,U,W,X,Y,a,b,c,d,e,f,g,h,j,k,m,n,p,r,s,u,w,x,y"; public void ProcessRequest (HttpContext context) { string validateCode = CreateRandomCode(4); context.Session["ValidateCode"] = validateCode;//将验证码保存到session中 CreateCodeImage(validateCode, context); } public bool IsReusable { get {return false; } } /// /// 验证码个数 /// 验证码字符串 public string CreateRandomCode(int n) { string[] CharArray = charcode.Split(,);//将字符串转换为字符数组 string randomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < n; i++) {if (temp != -1){ rand = new Random(i * temp * ((int)DateTime.Now.Ticks));}int t = rand.Next(CharArray.Length - 1);if (temp != -1 && temp == t){ return CreateRandomCode(n);}temp = t;randomCode += CharArray[t]; } return randomCode; } public void CreateCodeImage(string checkCode, HttpContext context) { int iwidth = (int)(checkCode.Length * 13); System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20); Graphics g = Graphics.FromImage(image); Font f = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Italic | System.Drawing.FontStyle.Bold)); // 前景色 Brush b = new System.Drawing.SolidBrush(Color.Black); // 背景色 g.Clear(Color.White); // 填充文字 g.DrawString(checkCode, f, b, 0, 1); // 随机线条 Pen linePen = new Pen(Color.Gray, 0); Random rand = new Random(); for (int i = 0; i < 5; i++) {int x1 = rand.Next(image.Width);int y1 = rand.Next(image.Height);int x2 = rand.Next(image.Width);int y2 = rand.Next(image.Height);g.DrawLine(linePen, x1, y1, x2, y2); } // 随机点 for (int i = 0; i < 30; i++) {int x = rand.Next(image.Width);int y = rand.Next(image.Height);image.SetPixel(x, y, Color.Gray); } // 边框 g.DrawRectangle(new Pen(Color.Gray), 0, 0, image.Width - 1, image.Height - 1); // 输出图片 System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); context.Response.ClearContent(); context.Response.ContentType = "image/jpeg"; context.Response.BinaryWrite(ms.ToArray()); g.Dispose(); image.Dispose(); }}

封装成类库:ValidateNumber.cs

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Drawing;using System.Web.UI;using System.Drawing.Drawing2D;using System.IO;using System.Drawing.Imaging;/// public class ValidateNumber{ //产生验证码的字符集 (易混淆的字符去掉) private string charcode = "2,3,4,5,6,8,9,A,B,C,D,E,F,G,H,J,K,M,N,P,R,S,U,W,X,Y,a,b,c,d,e,f,g,h,j,k,m,n,p,r,s,u,w,x,y"; /// public int MaxLength { get { return 10; } } /// public int MinLength { get { return 1; } } /// /// 指定验证码的长度 /// public string CreateValidateNumber(int length) { string[] CharArray = charcode.Split(,);//将字符串转换为字符数组 string randomCode = ""; int temp = -1; Random rand = new Random(); for (int i = 0; i < length; i++) {if (temp != -1){ rand = new Random(i * temp * ((int)DateTime.Now.Ticks));}int t = rand.Next(CharArray.Length - 1);if (temp != -1 && temp == t){ return CreateValidateNumber(length);}temp = t;randomCode += CharArray[t]; } return randomCode; } /// /// context对象 /// 验证码 public void CreateValidateGraphic(HttpContext context,string validateNum) { int iwidth = (int)(validateNum.Length * 14); Bitmap image = new Bitmap(iwidth, 22); Graphics g = Graphics.FromImage(image); try {//生成随机生成器Random random = new Random();//清空图片背景色g.Clear(Color.White);//画图片的干扰线for (int i = 0; i < 25; i++){ int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);}Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);g.DrawString(validateNum, font, brush, 3, 2);//画图片的前景干扰点for (int i = 0; i < 100; i++){ int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next()));}//画图片的边框线g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);//保存图片数据MemoryStream stream = new MemoryStream();image.Save(stream, ImageFormat.Jpeg);//输出图片context.Response.Clear();context.Response.ContentType = "image/jpeg";context.Response.BinaryWrite(stream.ToArray()); } finally {g.Dispose();image.Dispose(); } } /// /// 验证码的长度 /// public static int GetImageWidth(int validateNumLength) { return (int)(validateNumLength * 14); } /// /// public static double GetImageHeight() { return 22; }}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。