1using System.Drawing;
2using System.Drawing.Imaging;
3private void Page_Load(object sender, System.EventArgs e)
4 {
5 // 在此处放置用户代码以初始化页面
6 //RndNum是一个自定义函数
7 string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串!
8 Session["VNum"]=VNum;
9 ValidateCode(VNum);
10 }
11//生成图像函数
12 private void ValidateCode(string VNum)
13 {
14 int Gheight=(int)(VNum.Length * 11.5);
15 //gheight为图片宽度,根据字符长度自动更改图片宽度
16 System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
17 Graphics g = Graphics.FromImage(Img);
18 g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
19 //在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
20 System.IO.MemoryStream ms=new System.IO.MemoryStream();
21 Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
22 Response.ClearContent(); //需要输出图象信息 要修改HTTP头
23 Response.ContentType="image/Png";
24 Response.BinaryWrite(ms.ToArray());
25 g.Dispose();
26 Img.Dispose();
27 Response.End();
28 }
29
30
31http://community.csdn.net/Expert/topic/3342/3342222.xml?temp=.5347406
32//生成随机数函数中从Vchar数组中随机抽取
33//字母区分大小写
34public string RndNum(int VcodeNum)
35 {
36 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" ;
37
38 string[] VcArray = Vchar.Split(',') ;
39 string VNum = "" ;//由于字符串很短,就不用StringBuilder了
40 int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数
41
42 //采用一个简单的算法以保证生成随机数的不同
43 Random rand =new Random();
44 for ( int i = 1 ; i < VcodeNum+1 ; i++ )
45 {
46 if ( temp != -1)
47 {
48 rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
49 }
50 //int t = rand.Next(35) ;
51 int t=rand.Next(35);
52 if (temp != -1 && temp == t)
53 {
54 return RndNum( VcodeNum );
55 }
56 temp = t ;
57 VNum += VcArray[t];
58
59 }
60 return VNum ;
61 }
62-----------------------------------end--------------------------------------------
63
64下面是Login.Aspx在在调用提交按钮的响应事件中
65public void doit(object sender, System.EventArgs e)
66 {
67 if(Page.IsValid)
68 {
69
70 string VNum;
71 VNum=Session["VNum"].ToString();
72 Session.Abandon();
73 ViewState["VNum"]=VNum;
74 if(this.Vcode.Text==ViewState["VNum"].ToString())
75 {
76
77 Hover.Manage.CheckLogin obj=new Hover.Manage.CheckLogin();
78 string name=username.Text;
79 string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5");
80 if(!obj.checklogin(name,password))
81 {
82 Response.Redirect("../Error.aspx?action=Errorlogin");
83 Response.End();
84 return;
85 }
86 else
87 {
88 Session.Add("adminname",name);
89 Session.Add("adminpass",password);
90 Response.Redirect("Default.aspx");
91 Response.End();
92 return;
93 }
94
95 }
96 else
97 {
98 Response.Write("<script>alert(\"请输入正确的附加码!\");</script>");
99 }
100 }
101 }
102 如果提交过来的验证字符串正确就验证是否是合法用户!
103否则弹出提示返回登陆页!你也可以简化此页!
104 if(this.Vcode.Text==ViewState["VNum"].ToString())
105 {
106 Response.Write("验证码正确");
107 }
108 else
109 {
110 Response.Write("验证码错误!");
111 }
112
113
114
2using System.Drawing.Imaging;
3private void Page_Load(object sender, System.EventArgs e)
4 {
5 // 在此处放置用户代码以初始化页面
6 //RndNum是一个自定义函数
7 string VNum=RndNum(4); //这里的数字4代表显示的是4位的验证字符串!
8 Session["VNum"]=VNum;
9 ValidateCode(VNum);
10 }
11//生成图像函数
12 private void ValidateCode(string VNum)
13 {
14 int Gheight=(int)(VNum.Length * 11.5);
15 //gheight为图片宽度,根据字符长度自动更改图片宽度
16 System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
17 Graphics g = Graphics.FromImage(Img);
18 g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
19 //在矩形内绘制字串(字串,字体,画笔颜色,左上x.左上y)
20 System.IO.MemoryStream ms=new System.IO.MemoryStream();
21 Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
22 Response.ClearContent(); //需要输出图象信息 要修改HTTP头
23 Response.ContentType="image/Png";
24 Response.BinaryWrite(ms.ToArray());
25 g.Dispose();
26 Img.Dispose();
27 Response.End();
28 }
29
30
31http://community.csdn.net/Expert/topic/3342/3342222.xml?temp=.5347406
32//生成随机数函数中从Vchar数组中随机抽取
33//字母区分大小写
34public string RndNum(int VcodeNum)
35 {
36 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" ;
37
38 string[] VcArray = Vchar.Split(',') ;
39 string VNum = "" ;//由于字符串很短,就不用StringBuilder了
40 int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数
41
42 //采用一个简单的算法以保证生成随机数的不同
43 Random rand =new Random();
44 for ( int i = 1 ; i < VcodeNum+1 ; i++ )
45 {
46 if ( temp != -1)
47 {
48 rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
49 }
50 //int t = rand.Next(35) ;
51 int t=rand.Next(35);
52 if (temp != -1 && temp == t)
53 {
54 return RndNum( VcodeNum );
55 }
56 temp = t ;
57 VNum += VcArray[t];
58
59 }
60 return VNum ;
61 }
62-----------------------------------end--------------------------------------------
63
64下面是Login.Aspx在在调用提交按钮的响应事件中
65public void doit(object sender, System.EventArgs e)
66 {
67 if(Page.IsValid)
68 {
69
70 string VNum;
71 VNum=Session["VNum"].ToString();
72 Session.Abandon();
73 ViewState["VNum"]=VNum;
74 if(this.Vcode.Text==ViewState["VNum"].ToString())
75 {
76
77 Hover.Manage.CheckLogin obj=new Hover.Manage.CheckLogin();
78 string name=username.Text;
79 string password=FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Text.ToString(),"md5");
80 if(!obj.checklogin(name,password))
81 {
82 Response.Redirect("../Error.aspx?action=Errorlogin");
83 Response.End();
84 return;
85 }
86 else
87 {
88 Session.Add("adminname",name);
89 Session.Add("adminpass",password);
90 Response.Redirect("Default.aspx");
91 Response.End();
92 return;
93 }
94
95 }
96 else
97 {
98 Response.Write("<script>alert(\"请输入正确的附加码!\");</script>");
99 }
100 }
101 }
102 如果提交过来的验证字符串正确就验证是否是合法用户!
103否则弹出提示返回登陆页!你也可以简化此页!
104 if(this.Vcode.Text==ViewState["VNum"].ToString())
105 {
106 Response.Write("验证码正确");
107 }
108 else
109 {
110 Response.Write("验证码错误!");
111 }
112
113
114