动态生成验证码
生成GIF后再到前台绑定到图片或图片按钮上。就可以。
步骤:
1先新建一个【一般处理程序】,找一下,后缀名为 ashx (我生成的是:Handler.ashx)
2.把下面源码贴上去(替换整个页面)。
3
A 】 生成图片方式:
<asp:Image ID="Image1" runat="server" ImageUrl="~/Handler.ashx" />
b】 生成图片按钮方式(此方式可以通过点击图片刷新验证码):
<asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Handler.ashx" />
4.
你可以在你的绑定页面里通过
Session[strIdentify]取得图片生成的文字。从而进行比较。
///下面是源码
<%@ WebHandler Language="C#" Class="ValidateImageHandler" %> using System; using System.Web; using System.Web.SessionState; using System.Drawing; using System.Drawing.Imaging; using System.Text; /// <summary> /// ValidateImageHandler 生成网站验证码功能 /// </summary> public class ValidateImageHandler : IHttpHandler, IRequiresSessionState { int intLength = 5; //长度 string strIdentify = "Identify"; //随机字串存储键值,以便存储到Session中 public ValidateImageHandler() { } /// <summary> /// 生成验证图片核心代码 /// </summary> /// <param name="hc"></param> public void ProcessRequest(HttpContext hc) { //设置输出流图片格式 hc.Response.ContentType = "image/gif"; Bitmap b = new Bitmap(200, 60); Graphics g = Graphics.FromImage(b); g.FillRectangle(new SolidBrush(Color.YellowGreen), 0, 0, 200, 60); Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel); Random r = new Random(); //合法随机显示字符列表 string strLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"; StringBuilder s = new StringBuilder(); //将随机生成的字符串绘制到图片上 for (int i = 0; i < intLength; i++) { s.Append(strLetters.Substring(r.Next(0, strLetters.Length - 1), 1)); g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15)); } //生成干扰线条 Pen pen = new Pen(new SolidBrush(Color.Blue), 2); for (int i = 0; i < 10; i++) { g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59))); } b.Save(hc.Response.OutputStream, ImageFormat.Gif); hc.Session[strIdentify] = s.ToString(); //先保存在Session中,验证与用户输入是否一致 hc.Response.End(); } /// <summary> /// 表示此类实例是否可以被多个请求共用(重用可以提高性能) /// </summary> public bool IsReusable { get { return true; } } }