1
using System.Drawing;
2
using System.Drawing.Imaging;
3
private 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
31
http://community.csdn.net/Expert/topic/3342/3342222.xml?temp=.5347406
32
//生成随机数函数中从Vchar数组中随机抽取
33
//字母区分大小写
34
public 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在在调用提交按钮的响应事件中
65
public 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

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114
