验证码本质就是一幅图片,即先创建一副图片,然后在图片上随机的画上一些字符,这些字符都保存在Session中。通过对比用户输入的字符串就可知道正确与否。 <%@ WebHandler Language="C#" Class="YZM" %> using System; using System.Web; using System.Drawing; using System.Text; public class YZM : IHttpHandler,System.Web.SessionState.IRequiresSessionState { public void ProcessRequest (HttpContext context) { context.Response.ContentType = "image/Jpeg"; Bitmap b = new Bitmap(200, 60); Graphics g = Graphics.FromImage(b); g.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60); Font font = new Font(FontFamily.GenericSansSerif,48,FontStyle.Bold, GraphicsUnit.Pixel); Random r = new Random(); string letters = "AaBbCDdEeFfGgHhIiJjKLlMmNnOPQqRrSTtUuVWXYyZ"; string letter = ""; StringBuilder s = new StringBuilder(); for (int x = 0; x < 5; x++) { letter = letters.Substring(r.Next(0,letters.Length-1),1); s.Append(letter); g.DrawString(letter,font,new SolidBrush(Color.Black), x*38,r.Next(0,15)); } Pen linePen = new Pen(new SolidBrush(Color.Black),2); for (int x = 0; x < 6; x++) { g.DrawLine(linePen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59))); } b.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); context.Session["yzmImage"]=s.ToString(); context.Response.End(); } public bool IsReusable { get { return false; } } } protected void Button1_Click(object sender, EventArgs e) { string yzm = Convert.ToString(Session["yzmImage"]); if (yzm == TextBox1.Text.Trim()) { Response.Write("验证码正确!"); } else { Response.Write("验证码错误!"); } }