ASP.NET产生随机验证码
来源:互联网 发布:淘宝钛锗手链 编辑:程序博客网 时间:2024/05/30 05:12
protected void Page_Load(object sender, EventArgs e) { //用来保存随机字符串 string chkCode = string.Empty; //字体的颜色 Color[] color = new Color[] {Color.Black,Color.Red,Color.Blue,Color.Green, Color.Brown,Color.DarkBlue,Color.Gray}; //字体 string[] font = new string[]{"Times New Roman","MS Mincho","Book Antiqua", "Gungsuh", "PMingLiU", "Impact"}; //字符串集合 char[] character = 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 rd = new Random(); for (int i = 0; i < 4;i++ ) { chkCode += character[rd.Next(character.Length)]; //随机产生一个字母,最后组成验证码 } //定义一副位图 Bitmap bmp = new Bitmap(100, 40); //指定大小 //创建画布,来自位图bmp Graphics g = Graphics.FromImage(bmp); g.Clear(Color.White); //画线 for (int i = 0; i < 10;i++ ) { int x1 = rd.Next(100); //随机产生点的位置 int y1 = rd.Next(40); int x2 = rd.Next(100); int y2 = rd.Next(40); Color clr=color[rd.Next(color.Length)]; //随机产生一种线的颜色 g.DrawLine(new Pen(clr), x1, y1, x2, y2); } //画验证码 for (int i = 0; i < chkCode.Length;i++ ) { string fnt = font[rd.Next(font.Length)]; //随机产生一种字体 Font ft = new Font(fnt, 18); Color clr = color[rd.Next(color.Length)]; //随机产生一种颜色 g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), i * 20 + 8, 8); } //画点 for (int i = 0; i < 100;i++ ) { int x = rd.Next(bmp.Width); //随机产生点 int y = rd.Next(bmp.Height); Color clr = color[rd.Next(color.Length)]; //随机产生颜色 bmp.SetPixel(x, y, clr); } Response.Buffer = true; Response.ExpiresAbsolute = DateTime.Now.AddMilliseconds(0); Response.Expires = 0; Response.CacheControl = "no-cache"; Response.AppendHeader("Pragma", "No-Cache"); MemoryStream ms = new MemoryStream(); //定义一个内存流对象 try { bmp.Save(ms, ImageFormat.Png); //将图像以指定的格式保存到内存流中 Response.ClearContent(); Response.ContentType = "image/png"; //设置HTTP输出流的类型 Response.BinaryWrite(ms.ToArray()); //将字节写入输出流 } finally { //释放资源 bmp.Dispose(); g.Dispose(); } }
使用时将img的src设置为产生验证码文件的路径即可。
<asp:Image ID="Image1" runat="server" src="shengchengYZM.aspx" />
<a href="Login.aspx">看不清,换一张</a>
如果要实现点击图片也能更新验证码的话,可以在image的onclick加上onclick="this.src='shengchengYZM.aspx?a='+new Date().getMilliseconds()" 。即让每次点击都请求新的图片。
注:本文转自 http://www.jb51.net/article/9492.htm
- 产生随机验证码(asp.net)
- ASP.NET产生随机验证码
- asp.net 随机验证码
- 产生随机验证码
- 产生随机验证码
- 随机产生验证码
- 随机产生验证码
- 随机产生验证码
- asp.net(C#) 生成随机验证码
- ASP.NET(C#)生成随机验证码
- asp.net 生成随机图形验证码
- asp.net生成随机验证码
- asp.net随机数字验证码
- ASP.NET随机生成验证码图片
- ASP.Net随机生成验证码
- ASP.NET 生成随机验证码
- JSP产生随机验证码
- 产生随机的验证码
- pku3468: A Simple Problem with Integers
- Android开发入门之采用ContentProvider对外共享数据
- JAVA语法总结 - 基本数据类型
- CSS总结
- nefu 2 打素数表
- ASP.NET产生随机验证码
- iOS 学习笔记 8 NSUserDefaults学习
- C的xml编程文章链接
- MSSQL2K - SQL Injector - Query String Parameter Attack结合netcat获得反向cmdshell
- Java语法总结 - 数组
- signapk流程分析
- UIButton,设置为UIButtonTypeCustom类型时,做圆角效果
- Java语法总结 - 字符串
- hdu 1166——敌兵布阵 (线段树)