vs2005下彩色验证码的实现.docx

上传人:scccc 文档编号:13178017 上传时间:2021-12-17 格式:DOCX 页数:14 大小:14.82KB
返回 下载 相关 举报
vs2005下彩色验证码的实现.docx_第1页
第1页 / 共14页
vs2005下彩色验证码的实现.docx_第2页
第2页 / 共14页
vs2005下彩色验证码的实现.docx_第3页
第3页 / 共14页
vs2005下彩色验证码的实现.docx_第4页
第4页 / 共14页
vs2005下彩色验证码的实现.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《vs2005下彩色验证码的实现.docx》由会员分享,可在线阅读,更多相关《vs2005下彩色验证码的实现.docx(14页珍藏版)》请在三一文库上搜索。

1、.vs2005下彩色验证码的实现二、项目中添加一个类命名为(可任选)在此类中添加代码using System;using System.Web;using System.IO;using System.Drawing;/*/ <summary>/ Class1 的摘要说明/ </summary>public class zhangming public class VerifyCode 验证码长度(默认5个验证码的长度)#region 验证码长度(默认5个验证码的长度) int length = 5; public int Length get return lengt

2、h; set length = value; #endregion 验证码字体大小(默认10像素)#region 验证码字体大小(默认10像素) int fontSize = 10; public int FontSize get return fontSize; set fontSize = value; #endregion 边框补(默认1像素)#region 边框补(默认1像素) int padding = 1; public int Padding get return padding; set padding = value; #endregion 是否输出燥点(默认不输出)#reg

3、ion 是否输出燥点(默认不输出) bool chaos = true; public bool Chaos get return chaos; set chaos = value; #endregion 输出燥点的颜色(默认灰色)#region 输出燥点的颜色(默认灰色) Color chaosColor = Color.LightGray; public Color ChaosColor get return chaosColor; set chaosColor = value; #endregion 自定义背景色(默认白色)#region 自定义背景色(默认白色) Color backg

4、roundColor = Color.White; public Color BackgroundColor get return backgroundColor; set backgroundColor = value; #endregion 自定义随机颜色数组#region 自定义随机颜色数组 Color colors = Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple; public Color Colors get return c

5、olors; set colors = value; #endregion 自定义字体数组#region 自定义字体数组 string fonts = "Arial", "Georgia" public string Fonts get return fonts; set fonts = value; #endregion 自定义随机码字符串序列(使用逗号分隔)#region 自定义随机码字符串序列(使用逗号分隔) string codeSerial = "0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i,j,k,l,

6、m,n,o,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z" public string CodeSerial get return codeSerial; set codeSerial = value; #endregion 生成校验码图片#region 生成校验码图片 public Bitmap CreateImageCode(string code) int fSize = FontSize; int fWidth = fSize + Padding; int imageWidt

7、h = (int)(code.Length * fWidth) + 4 + Padding * 2; int imageHeight = fSize *2 + Padding; System.Drawing.Bitmap image = new System.Drawing.Bitmap(imageWidth, imageHeight); Graphics g = Graphics.FromImage(image); g.Clear(BackgroundColor); Random rand = new Random(); /给背景添加随机生成的燥点 if(this.Chaos) Pen pe

8、n = new Pen(ChaosColor, 0); int c = Length * 10; for(int i=0;i<c;i+) int x = rand.Next(image.Width); int y = rand.Next(image.Height); g.DrawRectangle(pen, x, y, 1, 1); int left = 0 , top = 0, top1 = 1, top2 = 1; int n1 = (imageHeight - FontSize - Padding * 2); int n2 = n1/4; top1 = n2; top2 = n2

9、*2; Font f; Brush b; int cindex, findex; /随机字体和颜色的验证码字符 for(int i=0; i<code.Length; i+) cindex = rand.Next(Colors.Length - 1); findex = rand.Next(Fonts.Length - 1); f = new System.Drawing.Font(Fontsfindex, fSize, System.Drawing.FontStyle.Bold); b = new System.Drawing.SolidBrush(Colorscindex); if(

10、 i%2 = 1 ) top = top2; else top = top1; left = i * fWidth; g.DrawString(code.Substring(i,1), f, b, left, top); /画一个边框 边框颜色为Color.Gainsboro g.DrawRectangle(new Pen(Color.Gainsboro, 0), 0, 0, image.Width - 1, image.Height - 1); g.Dispose(); return image; #endregion 将创建好的图片输出到页面#region 将创建好的图片输出到页面 pub

11、lic void CreateImageOnPage(string code, HttpContext context) System.IO.MemoryStream ms = new System.IO.MemoryStream(); Bitmap image = this.CreateImageCode(code); image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); context.Response.ClearContent(); context.Response.ContentType = "image/Jpeg&

12、quot; context.Response.BinaryWrite(ms.GetBuffer(); ms.Close(); ms = null; image.Dispose(); image = null; #endregion 生成随机字符码#region 生成随机字符码 public string CreateVerifyCode(int codeLen) if(codeLen = 0) codeLen = Length; string arr = CodeSerial.Split(,); string code = "" int randValue = -1; Ra

13、ndom rand = new Random(unchecked(int)DateTime.Now.Ticks); for(int i=0; i<codeLen; i+) randValue = rand.Next(0, arr.Length -1); code += arrrandValue; return code; public string CreateVerifyCode() return CreateVerifyCode(0); #endregion 三、新建GetImageCode.aspx页面前台添加代码(实际前台代码无内容)<body> <form i

14、d="form1" runat="server"> <div> </div> </form></body>四、添加GetImageCode.aspx.cs后台代码using System;using System.Data;using System.Configuration;using System.Collections;using System.Web;using System.Web.Security;using System.Web.UI;using System.Web.UI.WebCon

15、trols;using System.Web.UI.WebControls.WebParts;using System.Web.UI.HtmlControls;using System.IO;using System.Drawing;public partial class Default4 : System.Web.UI.Page 验证码长度(默认5个验证码的长度)#region 验证码长度(默认5个验证码的长度) int length = 5; #endregion 验证码字体大小(默认10像素)#region 验证码字体大小(默认10像素) int fontSize = 10; #end

16、region 边框补(默认1像素)#region 边框补(默认1像素) int padding = 1; #endregion 是否输出燥点(默认输出)#region 是否输出燥点(默认输出) bool chaos = true; #endregion 输出燥点的颜色(默认灰色)#region 输出燥点的颜色(默认灰色) Color chaosColor = System.Drawing.Color.Pink; #endregion 自定义背景色(默认白色)#region 自定义背景色(默认白色) Color backgroundColor = Color.White; #endregion

17、自定义随机颜色数组#region 自定义随机颜色数组 Color colors = Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple ; #endregion 自定义字体数组#region 自定义字体数组 string fonts = "Arial", "Georgia" ; #endregion 自定义随机码字符串序列(使用逗号分隔)#region 自定义随机码字符串序列(使用逗号分隔)

18、 string codeSerial = "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,v,w,x,y,z" #endregion protected void Page_Load(object sender, EventArgs e) zhangming.VerifyCode v = new zhangming.VerifyCode(); v.Length = this.length; v.FontSize = this.fontSize; v.Chaos = this.chaos; v.Ba

19、ckgroundColor = this.backgroundColor; v.ChaosColor = this.chaosColor; v.CodeSerial = this.codeSerial; v.Colors = this.colors; v.Fonts = this.fonts; v.Padding = this.padding; string code = v.CreateVerifyCode(); /取随机码 v.CreateImageOnPage(code, this.Context); / 输出图片 /Session"CheckCode" = code

20、.ToLower(); / 使用Session"CheckCode"取验证码的值 Response.Cookies.Add(new HttpCookie("CheckCode", code.ToLower();/ 使用Cookies取验证码的值 五、验证码的使用(在Test.aspx页面加入<asp:Image id="Image1" runat="server" ImageUrl="/GetVerifyCode.aspx"></asp:Image>)即实现验证码<

21、form id="form1" runat="server"> <div> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>&nbsp; &nbsp;<asp:Image id="Image1" runat="server" ImageUrl="GetImageCode.aspx"></asp:Image> &a

22、mp;nbsp; &nbsp; <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /><br /> <asp:Label ID="Label1" runat="server"></asp:Label></div> </form>六、Test.aspx.cs后台代码protected void

23、Page_Load(object sender, EventArgs e) if (!Page.IsPostBack) /Session"CheckCode" = "" Response.Cookies.Add(new HttpCookie("CheckCode", ""); protected void Button1_Click(object sender, EventArgs e) if (Request.Cookies"CheckCode" = null) Label1.Text = &

24、quot;您的浏览器设置已被禁用 Cookies,您必须设置浏览器允许使用 Cookies 选项后才能使用本系统。" Label1.Visible = true; return; if (String.Compare(Request.Cookies"CheckCode".Value, TextBox1.Text.ToString().Trim(), true) != 0) Label1.Text = "验证码错误,请输入正确的验证码。" Label1.Visible = true; return; else Label1.Text = "验证码OK。" Label1.Visible = true; :

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1