ASP.NET验证码(3种)

ASP.NET验证码(3种) 
把最近碰到的能够用的验证码都放出来,作个记录 
1.GSC_WebControlLibrary
这是在网上找到的一个控件,非常好用。但是效果不是特别好(见下图。
)虽然容易使用,所有的属性都可以像控件一样设置,但是可用性不太高。用户不能自定义,而且看起来这个验证码效果不太好。
效果:

2.用一个页面生成图片,另一个页面调用,验证码存入cookie,调用时取cookie对比验证.这个用户就可以按自己的喜好更改效果和验证码的长度了 (:

效果如图:

代码如下:
CheckCode.aspx

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;

public partial class Tools_CheckCode :System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
       this.CreateCheckCodeImage(GenerateCheckCode());

    }

    private stringGenerateCheckCode()
    {
        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 voidCreateCheckCodeImage(string checkCode)
    {
        if (checkCode == null ||checkCode.Trim() == String.Empty)
            return;

       System.Drawing.Bitmap image = newSystem.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.GreenYellow), x1, y1, x2, y2);
            }

           Font font = new System.Drawing.Font("Verdana", 12, (System.Drawing.FontStyle.Bold| System.Drawing.FontStyle.Italic));
           System.Drawing.Drawing2D.LinearGradientBrush brush = newSystem.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 < 80; 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.Red), 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();
        }
    }


}

然后在需要使用的页面引用:
UseCheckCode.aspx
<img src="Tools/CheckCode.aspx" alt="验证码" style="width: 60px; height: 24px" />
3.用web handler生成图片。这个其实和前面的意思大致差不多,调用方法也基本和2一样,不同的是,他的验证码是存入Session的。供学习参考。

效果图如下:


ValidateImageHandler.ashx
%@ 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(newSolidBrush(Color.YellowGreen), 0, 0, 200, 60);
        Font font = newFont(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);
        Random r = new Random();

       //合法随机显示字符列表
        string strLetters ="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
        StringBuilder s = newStringBuilder();
        
        //将随机生成的字符串绘制到图片上
        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(newSolidBrush(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;
        }
    }
}

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证码第三方验证控件 验证

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值