[ASP.NET] 验证码生成
类:
![](/Images/OutliningIndicators/ContractedBlock.gif)
CheckCode.cs
1
//----------------------------------------------------------------------
2
// Ryan Wei
3
// Date:2008.05.08
4
//----------------------------------------------------------------------
5
// Description:
6
//----------------------------------------------------------------------
7
using System;
8
using System.Collections.Generic;
9
using System.Text;
10
using System.Drawing;
11![](/Images/OutliningIndicators/None.gif)
12
namespace HouseProgram.Common
13![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
14
public class CheckCode
15![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
16![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**///// <summary>
17
/// 生成随机数
18
/// </summary>
19
/// <param name="codeCount">要生成的随机数位数</param>
20
/// <returns></returns>
21
public static string CreateRandomCode(int codeCount)
22![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
23
string allChar = "0,1,2,3,4,5,6,7,8,9";
24
string[] allCharArray = allChar.Split(',');
25
string randomCode = "";
26
int temp = -1;
27![](/Images/OutliningIndicators/InBlock.gif)
28
Random rand = new Random();
29
for(int i = 0; i < codeCount; i++)
30![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
31
if(temp != -1)
32![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
33
rand = new Random(i*temp*((int)DateTime.Now.Ticks));
34
}
35
int t = rand.Next(9);
36
if(temp == t)
37![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
38
return CreateRandomCode(codeCount);
39
}
40
temp = t;
41
randomCode += allCharArray[t];
42
}
43
return randomCode;
44
}
45![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**///// <summary>
46
/// 生成验证码图片
47
/// </summary>
48
/// <param name="checkCode"></param>
49
public static void CreateImage(string checkCode)
50![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
51
int iwidth = (int)(checkCode.Length * 11.5);
52
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 20);
53
Graphics g = Graphics.FromImage(image);
54
Font f = new System.Drawing.Font("Arial", 10, System.Drawing.FontStyle.Bold);
55
Brush b = new System.Drawing.SolidBrush(Color.White);
56
g.Clear(Color.Blue);
57
g.DrawString(checkCode, f, b, 3, 3);
58![](/Images/OutliningIndicators/InBlock.gif)
59
Pen blackPen = new Pen(Color.Brown,0);
60
Random rand = new Random();
61
for (int i=0;i<5;i++)
62![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
63
int y = rand.Next(image.Height);
64
}
65
66
System.IO.MemoryStream ms = new System.IO.MemoryStream();
67
for(int i=0; i<90; i++)
68![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
69
int x = rand.Next(image.Width);
70
int y = rand.Next(image.Height);
71
image.SetPixel(x, y, Color.FromArgb(rand.Next()));
72
}
73
image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
74
System.Web.HttpContext.Current.Response.ClearContent();
75
System.Web.HttpContext.Current.Response.ContentType = "image/Jpeg";
76
System.Web.HttpContext.Current.Response.BinaryWrite(ms.ToArray());
77
g.Dispose();
78
image.Dispose();
79
}
80
}
81
}
82![](/Images/OutliningIndicators/None.gif)
页面后台代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
checkCode.aspx.cs
1
//----------------------------------------------------------------------
2
// Ryan Wei
3
// Date:2008.05.08
4
//----------------------------------------------------------------------
5
// Description: CheckCode Display Page
6
//----------------------------------------------------------------------
7
using System;
8
using System.Data;
9
using System.Configuration;
10
using System.Collections;
11
using System.Web;
12
using System.Web.Security;
13
using System.Web.UI;
14
using System.Web.UI.WebControls;
15
using System.Web.UI.WebControls.WebParts;
16
using System.Web.UI.HtmlControls;
17
using HouseProgram.Common;
18![](/Images/OutliningIndicators/None.gif)
19
public partial class checkCode : System.Web.UI.Page
20![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
{
21![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
22
///
23
/// </summary>
24
/// <param name="sender"></param>
25
/// <param name="e"></param>
26
protected void Page_Load(object sender, EventArgs e)
27![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
28
//Generate 4 bit CheckCode
29
string checkCode = CheckCode.CreateRandomCode(4);
30
//Cache CheckCode
31
Session[PublicConstString.session_CheckCode] = checkCode;
32
//Create Image
33
CheckCode.CreateImage(checkCode);
34
}
35
}
36![](/Images/OutliningIndicators/None.gif)
在登录页面添加ImageButton, ImageURL指定为CheckCode.aspx页面。
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/InBlock.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/InBlock.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/InBlock.gif)
62
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/InBlock.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
69
![](/Images/OutliningIndicators/InBlock.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/InBlock.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
80
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
81
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
82
![](/Images/OutliningIndicators/None.gif)
页面后台代码:
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
1
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/None.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/None.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/None.gif)
15
![](/Images/OutliningIndicators/None.gif)
16
![](/Images/OutliningIndicators/None.gif)
17
![](/Images/OutliningIndicators/None.gif)
18
![](/Images/OutliningIndicators/None.gif)
19
![](/Images/OutliningIndicators/None.gif)
20
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/ContractedBlock.gif)
![](/Images/dot.gif)
21
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/InBlock.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
![](/Images/dot.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
35
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
36
![](/Images/OutliningIndicators/None.gif)
在登录页面添加ImageButton, ImageURL指定为CheckCode.aspx页面。