动态显示验证码怎么实现?
发布网友
发布时间:2022-04-23 07:35
我来回答
共2个回答
热心网友
时间:2022-04-18 08:51
我做的是ASP.NET的你看一下,如何。生成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;
}
}
}
热心网友
时间:2022-04-18 10:09
把文字用画图画出来保存到一个GIF文件