菜鸟一名123  

很多时候我们在登录什么网站的时候,除了需要什么用户名和密码之外,有的还需要验证码那么在asp.net中这个验证码如何编写和设计,今天我就来给大家说一下;

首先创建一个页面名字随便起一个,我们这里叫做CheckCode.aspx。创建了这个页面以后我们需要在后台写一些代码,就是在CheckCode.aspx.cs这个页面里面写代码,我们需要些如下代码以方便我们形成验证码

 1 protected void Page_Load(object sender, EventArgs e)
 2     {
 3         CreateCheckCodeImage(GenerateCheckCode());
 4     }
 5     private string GenerateCheckCode()
 6     {
 7         //创建整型型变量
 8         int number;
 9         //创建字符型变量
10         char code;
11         //创建字符串变量并初始化为空
12         string checkCode = String.Empty;
13         //创建Random对象
14         Random random = new Random();
15         //使用For循环生成4个数字
16         for (int i = 0; i < 4; i++)
17         {
18             //生成一个随机数
19             number = random.Next();
20             //将数字转换成为字符型
21             code = (char)('0' + (char)(number % 10));
22 
23             checkCode += code.ToString();
24         }
25         //将生成的随机数添加到Cookies中
26         Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
27         //返回字符串
28         return checkCode;
29     }
30 
31     private void CreateCheckCodeImage(string checkCode)
32     {
33         //判断字符串不等于空和null
34         if (checkCode == null || checkCode.Trim() == String.Empty)
35             return;
36         //创建一个位图对象
37         System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
38         //创建Graphics对象
39         Graphics g = Graphics.FromImage(image);
40 
41         try
42         {
43             //生成随机生成器
44             Random random = new Random();
45 
46             //清空图片背景色
47             g.Clear(Color.White);
48 
49             //画图片的背景噪音线
50             for (int i = 0; i < 2; i++)
51             {
52                 int x1 = random.Next(image.Width);
53                 int x2 = random.Next(image.Width);
54                 int y1 = random.Next(image.Height);
55                 int y2 = random.Next(image.Height);
56 
57                 g.DrawLine(new Pen(Color.Black), x1, y1, x2, y2);
58             }
59 
60             Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));
61             System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
62             g.DrawString(checkCode, font, brush, 2, 2);
63 
64             //画图片的前景噪音点
65             for (int i = 0; i < 100; i++)
66             {
67                 int x = random.Next(image.Width);
68                 int y = random.Next(image.Height);
69 
70                 image.SetPixel(x, y, Color.FromArgb(random.Next()));
71             }
72 
73             //画图片的边框线
74             g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
75 
76             //将图片输出到页面上
77             System.IO.MemoryStream ms = new System.IO.MemoryStream();
78             image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
79             Response.ClearContent();
80             Response.ContentType = "image/Gif";
81             Response.BinaryWrite(ms.ToArray());
82         }
83         finally
84         {
85             g.Dispose();
86             image.Dispose();
87         }

在编写验证的时候一定要添加Using System.Drawing引用,在CheckCode.aspx.cs文件中输入如下的代码就可以了,就会形成相应的随机验证码。

在登录的页面采用如下的元素来对验证页面进行引用

1 <img style=" cursor:hand;width: 76px; height: 21px"  id="imgCode" src="../CheckCode.aspx" alt="看不清,请点击我!"  onclick="this.src=this.src+'?'" />

在src属性的后面输入对应的这个CheckCode.aspx这个页面的地址就可以了

posted on 2017-03-13 16:30  菜鸟一名123  阅读(355)  评论(0)    收藏  举报