以下内容来自网络,我个人加于整理。测试过的,好用。
生成验证码:
ValidateCode.aspx.cs文件
可以如下方法引用:
ValidateTest.aspx.cs文件
生成验证码:
ValidateCode.aspx.cs文件
1
private void Page_Load(object sender, System.EventArgs e)
2
{
3
string VNum=RndNum(4);//这里的数字4代表显示的是4位的验证字符串!
4
Session["VNum"]=VNum; //创建验证码的Session
5
GetValidateCode(VNum);//生成图像
6
}
7![](/Images/OutliningIndicators/None.gif)
8![](/Images/OutliningIndicators/None.gif)
9
/// <summary>
10
/// 生成图像
11
/// </summary>
12
/// <param name="VNum"></param>
13
private void GetValidateCode(string VNum)
14
{
15
int Gwidth=(int)(VNum.Length * 13);
16
//Gwidth为图片宽度,根据字符长度自动更改图片宽度
17
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gwidth,25);
18
Graphics g = Graphics.FromImage(Img);
19
g.DrawString(VNum,new System.Drawing.Font("Arial",12),new System.Drawing.SolidBrush(Color.Blue),3,3);
20
//在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
21
System.IO.MemoryStream ms=new System.IO.MemoryStream();
22
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
23
Response.ClearContent(); //需要输出图象信息 要修改HTTP头
24
Response.ContentType="image/Png";
25
Response.BinaryWrite(ms.ToArray());
26
g.Dispose();
27
Img.Dispose();
28
Response.End();
29
}
30![](/Images/OutliningIndicators/None.gif)
31![](/Images/OutliningIndicators/None.gif)
32
/// <summary>
33
/// 生成随机数,从Vchar数组中随机抽取字符.
34
/// 字母区分大小写
35
/// </summary>
36
/// <param name="VcodeNum"></param>
37
/// <returns></returns>
38
public string RndNum(int VcodeNum)
39
{
40
string Vchar = "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,W,X,Y,Z" ;
41
42
string[] VcArray = Vchar.Split(',') ;
43
string VNum = "" ;
44
int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数
45![](/Images/OutliningIndicators/InBlock.gif)
46
//采用一个简单的算法以保证生成随机数的不同
47
Random rand =new Random();
48
for ( int i = 1 ; i < VcodeNum+1 ; i++ )
49
{
50
if ( temp != -1)
51
{
52
rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
53
}
54
int t=rand.Next(35);
55
if (temp != -1 && temp == t)
56
{
57
return RndNum( VcodeNum );
58
}
59
temp = t ;
60
VNum += VcArray[t];
61
}
62
return VNum ;
63
}
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
9
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
13
![](/Images/OutliningIndicators/None.gif)
14
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.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/ExpandedBlockEnd.gif)
30
![](/Images/OutliningIndicators/None.gif)
31
![](/Images/OutliningIndicators/None.gif)
32
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
33
![](/Images/OutliningIndicators/InBlock.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
38
![](/Images/OutliningIndicators/None.gif)
39
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
40
![](/Images/OutliningIndicators/InBlock.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/InBlock.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/InBlock.gif)
49
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
59
![](/Images/OutliningIndicators/InBlock.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
可以如下方法引用:
ValidateTest.aspx.cs文件
1
private void Page_Load(object sender, System.EventArgs e)
2
{
3
if(!IsPostBack)
4
{
5
//设置Image控件的ImageUrl属性(ValidateCode.aspx生成验证码的页名)
6
this.Image1.ImageUrl = "ValidateCode.aspx";
7
}
8
}
9![](/Images/OutliningIndicators/None.gif)
10
//按钮事件
11
private void Button1_Click(object sender, System.EventArgs e)
12
{
13
if(this.TextBox1.Text == Session["VNum"].ToString())
14
{
15
Response.Write("验证码正确!");
16
}
17
else
18
{
19
Response.Write("验证码错误!");
20
}
21
}
22![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
8
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
9
![](/Images/OutliningIndicators/None.gif)
10
![](/Images/OutliningIndicators/None.gif)
11
![](/Images/OutliningIndicators/None.gif)
12
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
21
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
22
![](/Images/OutliningIndicators/None.gif)