用Visual studio 2005制作验证码 大家好,我现在在做一个网站,我现在想做一个留言版我想在留言的最后提交处设置一个验证码,但是我又不知道该怎么用Visual studio 2005做,有知道请给我点提示。我先在这里谢谢拉。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1 首先先建立一个新类(如:CreateImage.cs),然后在这个类中写入下面的代码 2 //引用 3 using System.Drawing; 4 using System.Web; 5 //执行代码 6 public static void DrawImage() 7 { 8 CreateImage img=new CreateImage(); 9 HttpContext.Current.Session["CheckCode"]=img.RndNum(4); 10 img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString()); 11 } 12 /// <summary> 13 /// 生成验证图片 14 /// </summary> 15 /// <param name="checkCode">验证字符</param> 16 private void CreateImages(string checkCode) 17 { 18 int iwidth = (int)(checkCode.Length * 13); 19 System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23); 20 Graphics g = Graphics.FromImage(image); 21 g.Clear(Color.White); 22 //定义颜色 23 Color[] c = {Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple}; 24 //定义字体 25 string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial","宋体"}; 26 Random rand = new Random(); 27 //随机输出噪点 28 for(int i=0;i<50;i++) 29 { 30 int x = rand.Next(image.Width); 31 int y = rand.Next(image.Height); 32 g.DrawRectangle(new Pen(Color.LightGray, 0),x,y,1,1); 33 } 34 //输出不同字体和颜色的验证码字符 35 for(int i=0;i<checkCode.Length;i++) 36 { 37 int cindex = rand.Next(7); 38 int findex = rand.Next(5); 39 Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold); 40 Brush b = new System.Drawing.SolidBrush(c[cindex]); 41 int ii=4; 42 if((i+1)%2==0) 43 { 44 ii=2; 45 } 46 g.DrawString(checkCode.Substring(i,1), f, b, 3+(i*12), ii); 47 } 48 //画一个边框 49 g.DrawRectangle(new Pen(Color.Black,0),0,0,image.Width-1,image.Height-1); 50 //输出到浏览器 51 System.IO.MemoryStream ms = new System.IO.MemoryStream(); 52 image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg); 53 HttpContext.Current.Response.ClearContent(); 54 //Response.ClearContent(); 55 HttpContext.Current.Response.ContentType = "image/Jpeg"; 56 HttpContext.Current.Response.BinaryWrite(ms.ToArray()); 57 g.Dispose(); 58 image.Dispose(); 59 } 60 /// <summary> 61 /// 生成随机的字母 62 /// </summary> 63 /// <param name="VcodeNum">生成字母的个数</param> 64 /// <returns>string</returns> 65 public string RndNum(int VcodeNum) 66 { 67 string Vchar = "0,1,2,3,4,5,6,7,8,9" ; 68 string[] VcArray = Vchar.Split(',') ; 69 string VNum = "" ; //由于字符串很短,就不用StringBuilder了 70 int temp = -1 ; //记录上次随机数值,尽量避免生产几个一样的随机数 71 //采用一个简单的算法以保证生成随机数的不同 72 Random rand =new Random(); 73 for ( int i = 1 ; i < VcodeNum+1 ; i++ ) 74 { 75 if ( temp != -1) 76 { 77 rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks)); 78 } 79 int t = rand.Next(VcArray.Length ) ; 80 if (temp != -1 && temp == t) 81 { 82 return RndNum( VcodeNum ); 83 } 84 temp = t ; 85 VNum += VcArray[t]; 86 } 87 return VNum ; 88 } 89 90 其次建立一个新的页面(如:Image.aspx),在这个页面Page_Load的事件中写入引用类的方法,例如: 91 private void Page_Load(object sender, System.EventArgs e) 92 { 93 CreateImage.DrawImage (); 94 } 95 最后在显示界面上使用Label,Image,Button,TextBox控件, 96 Image控件的Url属性要连接Image.aspx,然后在写 97 private void Button1_Click(object sender, System.EventArgs e) 98 { 99 if(this.TextBox2.Text.Trim()==Session["CheckCode"].ToString())100 {101 this.Label1.Text="显示成功!";102 }103 else104 {this.Label1.Text="显示错误!";}105 } http://blog.csdn.net/zdyguilong/archive/2006/11/23/1408955.aspx 网上很多例子,搜索一下吧vs2003与vs2005里面代码没有区别 <tr> <td height="29" align="right">验证码∶</td> <td> <asp:TextBox ID="txtValidCode" runat="server" Width="72px" AccessKey="V" AutoCompleteType="Disabled" /><img src="ValidCode.aspx" border="0" /></td> </tr> 验证码页面:ValidCode.aspx前台:<%@ Page language="c#" Inherits="NetBar.ValidCode" CodeFile="ValidCode.aspx.cs" Theme="" %> 后台:private void Page_Load(object sender, System.EventArgs e) { this.CreateCheckCodeImage(GenerateCheckCode()); } private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for(int i=0; i<5; i++) { number = random.Next(); if(number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); return checkCode; } private void CreateCheckCodeImage(string checkCode) { if(checkCode == null || checkCode.Trim() == String.Empty) return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22); Graphics g = Graphics.FromImage(image); try { //生成随机生成器 Random random = new Random(); //清空图片背景色 g.Clear(Color.White); //画图片的背景噪音线 for(int i=0; i<25; i++) { int x1 = random.Next(image.Width); int x2 = random.Next(image.Width); int y1 = random.Next(image.Height); int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic)); 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); g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点 for(int i=0; i<100; i++) { int x = random.Next(image.Width); int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next())); } //画图片的边框线 g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream(); image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif); Response.ClearContent(); Response.ContentType = "image/Gif"; Response.BinaryWrite(ms.ToArray()); } finally { g.Dispose(); image.Dispose(); } } form提交表单加上runnat= server 的问题 asp.net如何连接access数据库??? .net json问题[求解决] 实例化一个类出错啦! 请问谁有下拉框的类,最好有例子,谢谢!! 求正则表达式 js中style.top与style.left无效 select * from maintable 图片刷新的问题 关于iis dbgrid中删除一行记录时,弹出删除确认,怎么实现!谢谢大峡 objectDataSource的参数如果把gridview的columns设成readonly就取不到为什么
2 //引用
3 using System.Drawing;
4 using System.Web;
5 //执行代码
6 public static void DrawImage()
7 {
8 CreateImage img=new CreateImage();
9 HttpContext.Current.Session["CheckCode"]=img.RndNum(4);
10 img.CreateImages(HttpContext.Current.Session["CheckCode"].ToString());
11 }
12 /// <summary>
13 /// 生成验证图片
14 /// </summary>
15 /// <param name="checkCode">验证字符</param>
16 private void CreateImages(string checkCode)
17 {
18 int iwidth = (int)(checkCode.Length * 13);
19 System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23);
20 Graphics g = Graphics.FromImage(image);
21 g.Clear(Color.White);
22 //定义颜色
23 Color[] c = {Color.Black,Color.Red,Color.DarkBlue,Color.Green,Color.Orange,Color.Brown,Color.DarkCyan,Color.Purple};
24 //定义字体
25 string[] font = {"Verdana","Microsoft Sans Serif","Comic Sans MS","Arial","宋体"};
26 Random rand = new Random();
27 //随机输出噪点
28 for(int i=0;i<50;i++)
29 {
30 int x = rand.Next(image.Width);
31 int y = rand.Next(image.Height);
32 g.DrawRectangle(new Pen(Color.LightGray, 0),x,y,1,1);
33 }
34 //输出不同字体和颜色的验证码字符
35 for(int i=0;i<checkCode.Length;i++)
36 {
37 int cindex = rand.Next(7);
38 int findex = rand.Next(5);
39 Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold);
40 Brush b = new System.Drawing.SolidBrush(c[cindex]);
41 int ii=4;
42 if((i+1)%2==0)
43 {
44 ii=2;
45 }
46 g.DrawString(checkCode.Substring(i,1), f, b, 3+(i*12), ii);
47 }
48 //画一个边框
49 g.DrawRectangle(new Pen(Color.Black,0),0,0,image.Width-1,image.Height-1);
50 //输出到浏览器
51 System.IO.MemoryStream ms = new System.IO.MemoryStream();
52 image.Save(ms,System.Drawing.Imaging.ImageFormat.Jpeg);
53 HttpContext.Current.Response.ClearContent();
54 //Response.ClearContent();
55 HttpContext.Current.Response.ContentType = "image/Jpeg";
56 HttpContext.Current.Response.BinaryWrite(ms.ToArray());
57 g.Dispose();
58 image.Dispose();
59 }
60 /// <summary>
61 /// 生成随机的字母
62 /// </summary>
63 /// <param name="VcodeNum">生成字母的个数</param>
64 /// <returns>string</returns>
65 public string RndNum(int VcodeNum)
66 {
67 string Vchar = "0,1,2,3,4,5,6,7,8,9" ;
68 string[] VcArray = Vchar.Split(',') ;
69 string VNum = "" ; //由于字符串很短,就不用StringBuilder了
70 int temp = -1 ; //记录上次随机数值,尽量避免生产几个一样的随机数
71 //采用一个简单的算法以保证生成随机数的不同
72 Random rand =new Random();
73 for ( int i = 1 ; i < VcodeNum+1 ; i++ )
74 {
75 if ( temp != -1)
76 {
77 rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
78 }
79 int t = rand.Next(VcArray.Length ) ;
80 if (temp != -1 && temp == t)
81 {
82 return RndNum( VcodeNum );
83 }
84 temp = t ;
85 VNum += VcArray[t];
86 }
87 return VNum ;
88 }
89
90 其次建立一个新的页面(如:Image.aspx),在这个页面Page_Load的事件中写入引用类的方法,例如:
91 private void Page_Load(object sender, System.EventArgs e)
92 {
93 CreateImage.DrawImage ();
94 }
95 最后在显示界面上使用Label,Image,Button,TextBox控件,
96 Image控件的Url属性要连接Image.aspx,然后在写
97 private void Button1_Click(object sender, System.EventArgs e)
98 {
99 if(this.TextBox2.Text.Trim()==Session["CheckCode"].ToString())
100 {
101 this.Label1.Text="显示成功!";
102 }
103 else
104 {this.Label1.Text="显示错误!";}
105 }
vs2003与vs2005里面代码没有区别
<td height="29" align="right">验证码∶</td>
<td>
<asp:TextBox ID="txtValidCode" runat="server" Width="72px" AccessKey="V" AutoCompleteType="Disabled" /><img src="ValidCode.aspx" border="0" /></td>
</tr> 验证码页面:ValidCode.aspx
前台:
<%@ Page language="c#" Inherits="NetBar.ValidCode" CodeFile="ValidCode.aspx.cs" Theme="" %>
private void Page_Load(object sender, System.EventArgs e)
{
this.CreateCheckCodeImage(GenerateCheckCode());
}
private string GenerateCheckCode()
{
int number;
char code;
string checkCode = String.Empty; System.Random random = new Random(); for(int i=0; i<5; i++)
{
number = random.Next(); if(number % 2 == 0)
code = (char)('0' + (char)(number % 10));
else
code = (char)('A' + (char)(number % 26)); checkCode += code.ToString();
} Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); return checkCode;
} private void CreateCheckCodeImage(string checkCode)
{
if(checkCode == null || checkCode.Trim() == String.Empty)
return; System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graphics g = Graphics.FromImage(image); try
{
//生成随机生成器
Random random = new Random(); //清空图片背景色
g.Clear(Color.White); //画图片的背景噪音线
for(int i=0; i<25; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height); g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
} Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
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);
g.DrawString(checkCode, font, brush, 2, 2); //画图片的前景噪音点
for(int i=0; i<100; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height); image.SetPixel(x, y, Color.FromArgb(random.Next()));
} //画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1); System.IO.MemoryStream ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "image/Gif";
Response.BinaryWrite(ms.ToArray());
}
finally
{
g.Dispose();
image.Dispose();
}
}