新建一个解决方案管理器---》添加--》新建网站---》asp.net空网站 。
在里面添加两个页(一个请求页面(Default.aspx),一个处理页面(VerifyCode.aspx))
请求页代码Default.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } protected void BtnSubmit_Click(object sender, EventArgs e) { string txt = TxtCerifyCode.Text; string vtxt = Session["code"].ToString(); string msg = ""; if (txt == vtxt) //如果你在txt(也就是TextBox1.Text)填入的值与在服务器端取到是值一致 { msg = "验证码输入正确"; } else { msg = "验证码错误"; } ClientScript.RegisterClientScriptBlock(this.GetType(), "script0", "<script>alert('" + msg + "');</script>"); } }
Default.aspx源代码
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> <script type="text/javascript"> var refreshCode = function () { document.getElementById('ImgVerifyCode').src = "VerifyCode.aspx"; } </script> </head> <body> <form id="form1" runat="server"> <div> <asp:TextBox runat="server" ID="TxtCerifyCode" /> <asp:Image ID="ImgVerifyCode" src="VerifyCode.aspx" runat="server" /> <a href="javascript:refreshCode()">刷新验证码</a> <br /><br /> <asp:Button runat="server" ID="BtnSubmit" Text="提交" onclick="BtnSubmit_Click" /> </div> </form> </body> </html>
处理页代码 VerifyCode.aspx.cs
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; using System.Collections; using System.ComponentModel; using System.Data; using System.Web.SessionState; using System.Web.UI.HtmlControls; using System.Drawing; using System.Drawing.Imaging; using System.Drawing.Text; //这个页面仅仅是生成一副图片,并处理了这幅图片而已。 public partial class VerifyCode : System.Web.UI.Page { //定义一个字体数组 static string[] FontItems = new string[] { "Arial", "Helvetica", "Geneva", "sans-serif", "Verdana" }; //定义一个画笔数组。 static Brush[] BrushItems = new Brush[] { Brushes.OliveDrab, Brushes.ForestGreen, Brushes.DarkCyan, Brushes.LightSlateGray, Brushes.RoyalBlue, Brushes.SlateBlue, Brushes.DarkViolet, Brushes.MediumVioletRed, Brushes.IndianRed, Brushes.Firebrick, Brushes.Chocolate, Brushes.Peru, Brushes.Goldenrod }; //定义一个颜色数组 static string[] BrushName = new string[] { "OliveDrab", "ForestGreen", "DarkCyan", "LightSlateGray", "RoyalBlue", "SlateBlue", "DarkViolet", "MediumVioletRed", "IndianRed", "Firebrick", "Chocolate", "Peru", "Goldenrod" }; private static Color BackColor = Color.White; private static Pen BorderColor = Pens.DarkGray; private static int Width = 52; //图片的宽度 private static int Height = 21; //图片的高度 private Random _random; private string _code; private int _brushNameIndex; override protected void OnInit(EventArgs e) { // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // //InitializeComponent(); //base.OnInit(e); } /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { //this.Load += new System.EventHandler(this.Page_Load); } /// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> public void Page_Load(object sender, System.EventArgs e) { if (!IsPostBack) { // // TODO : initialize // this._random = new Random(); this._code = GetRandomCode(); //取得一个 4 位的随机码 // // TODO : use Session["code"] save the VerifyCode // Session["code"] = this._code; //将随机取得的 4 位的随机码添加到Session里面去 ,于是在请求页面(Default.aspx.cs)取得这个Sesssion的值就行了 // // TODO : output Image // this.SetPageNoCache(); //设置页面不被缓存 this.OnPaint(); //绘画事件 } } /// <summary> /// 设置页面不被缓存 /// </summary> private void SetPageNoCache() { Response.Buffer = true; Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1); Response.Expires = 0; Response.CacheControl = "no-cache"; Response.AppendHeader("Pragma", "No-Cache"); } /// <summary> /// 取得一个 4 位的随机码 /// </summary> /// <returns></returns> private string GetRandomCode() { return Guid.NewGuid().ToString().Substring(0, 4); } /// <summary> /// 随机取一个字体 /// </summary> /// <returns></returns> private Font GetFont() { int fontIndex = _random.Next(0, FontItems.Length); FontStyle fontStyle = GetFontStyle(_random.Next(0, 2)); return new Font(FontItems[fontIndex], 12, fontStyle); } /// <summary> /// 取一个字体的样式 /// </summary> /// <param name="index"></param> /// <returns></returns> private FontStyle GetFontStyle(int index) { switch (index) { case 0: return FontStyle.Bold; case 1: return FontStyle.Italic; default: return FontStyle.Regular; } } /// <summary> /// 随机取一个笔刷 /// </summary> /// <returns></returns> private Brush GetBrush() { int brushIndex = _random.Next(0, BrushItems.Length); _brushNameIndex = brushIndex; return BrushItems[brushIndex]; } /// <summary> /// 绘画事件 /// </summary> private void OnPaint() { Bitmap objBitmap = null; Graphics g = null; try { objBitmap = new Bitmap(Width, Height); g = Graphics.FromImage(objBitmap); Paint_Background(g); Paint_Text(g); Paint_TextStain(objBitmap); Paint_Border(g); objBitmap.Save(Response.OutputStream, ImageFormat.Gif); Response.ContentType = "image/gif"; } catch { } finally { if (null != objBitmap) objBitmap.Dispose(); if (null != g) g.Dispose(); } } /// <summary> /// 绘画背景颜色 /// </summary> /// <param name="g"></param> private void Paint_Background(Graphics g) { g.Clear(BackColor); //清除绘图并以指定背景色填充 } /// <summary> /// 绘画边框 /// </summary> /// <param name="g"></param> private void Paint_Border(Graphics g) { g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1); } /// <summary> /// 绘画文字 /// </summary> /// <param name="g"></param> private void Paint_Text(Graphics g) { g.DrawString(_code, GetFont(), GetBrush(), 3, 1); } /// <summary> /// 绘画文字噪音点 /// </summary> /// <param name="g"></param> private void Paint_TextStain(Bitmap b) { for (int n = 0; n < 30; n++) { int x = _random.Next(Width); int y = _random.Next(Height); b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex])); } } }