zoukankan      html  css  js  c++  java
  • 记录两个验证码代码

    代码一:

    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;

    public partial class Test1 : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    if (!this.IsPostBack)
    {
    //生成验证码
    string temp = this.GetCode(4);
    HttpCookie cookie = new HttpCookie("yzm");
    cookie.Value = temp;
    Response.Cookies.Add(cookie);
    //画图
    this.GetCheckCodeImage(temp);
    }
    }

    //产生随机字符串
    private string GetCode(int num)
    {
    string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J",
    "K", "L", "M", "N", "O","P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ,"a", "b", "c", "d", "e", "f", "g", "h", "i", "j",
    "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y","z"};
    string code = "";
    Random rd = new Random();
    for (int i = 0; i < num; i++)
    {
    code += source[rd.Next(0, source.Length)];
    }
    Session["ValidateCode"] = code;//将字符串保存到Session中,以便需要时进行验证
    return code;

    }


    #region 验证码

    /// <summary>
    /// 生成验证码
    /// </summary>
    /// <param name="checkCode"></param>
    private void GetCheckCodeImage(string checkCode)
    {
    if (checkCode == null || checkCode.Trim() == String.Empty) return;

    System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)),25);
    Graphics g = Graphics.FromImage(image);
    try
    {
    Random random = new Random(); //生成随机生成器
    g.Clear(Color.White); //清空图片背景色
    for (int i = 0; i < 5; 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.Silver), x1, y1, x2, y2);
    }
    Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
    System.Drawing.Drawing2D.LinearGradientBrush brush = new System.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 < 60; 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.Silver), 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();
    }
    }

    #endregion


    }

    代码二:

    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.Imaging;
    using System.IO;

    public partial class viewImg : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    string chkCode = string.Empty;

    //颜色列表,用于验证码、噪线、噪点
    Color[] color ={ Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange,

    Color.Brown, Color.DarkBlue };

    //字体列表,用于验证码
    //string[] font ={ "Times New Roman", "Arial Black", "Elephant", "Verdana", "Georgia", "Impact" };
    string[] font ={"Arial Black"};

    //验证码的字符集,去掉了一些容易混淆的字符
    char[] character ={'0' ,'1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H' , 'I', 'J', 'K', 'L', 'M', 'N','O', 'P','Q', 'R', 'S', 'T','U','V', 'W', 'X', 'Y','Z' };

    Random rnd = new Random();

    //生成验证码字符串
    for (int i = 0; i < 4; i++)
    {
    chkCode += character[rnd.Next(character.Length)];
    }

    //保存验证码的Cookie
    HttpCookie anycookie = new HttpCookie("validateCookie");

    anycookie.Values.Add("ChkCode", chkCode);

    HttpContext.Current.Response.Cookies["validateCookie"].Values["ChkCode"] = chkCode;

    Bitmap bmp = new Bitmap(57, 23);

    Graphics g = Graphics.FromImage(bmp);

    g.Clear(Color.White);

    //画噪线
    for (int i = 0; i < 5; i++)
    {
    int x1 = rnd.Next(150);
    int y1 = rnd.Next(30);
    int x2 = rnd.Next(150);
    int y2 = rnd.Next(30);
    Color clr = color[rnd.Next(color.Length)];
    g.DrawLine(new Pen(clr), x1, y1, x2, y2);
    }
    //画验证码字符串
    for (int i = 0; i < chkCode.Length; i++)
    {
    string fnt = font[rnd.Next(font.Length)];
    Font ft = new Font(fnt, 12);
    Color clr = color[rnd.Next(color.Length)];
    g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 12, (float)3);
    }

    //画噪点
    for (int i = 0; i < 100; i++)
    {
    int x = rnd.Next(bmp.Width);
    int y = rnd.Next(bmp.Height);
    Color clr = color[rnd.Next(color.Length)];
    bmp.SetPixel(x, y, clr);
    }
    //清除该页输出缓存,设置该页无缓存
    Response.Buffer = true;

    Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0);

    Response.Expires = 0;
    Response.CacheControl = "no-cache";

    Response.AppendHeader("Pragma", "No-Cache");

    //将验证码图片写入内存流,并将其以"image/Png" 格式输出
    MemoryStream ms = new MemoryStream();

    try
    {
    bmp.Save(ms, ImageFormat.Png);
    Response.ClearContent();
    Response.ContentType = "image/Png";
    Response.BinaryWrite(ms.ToArray());
    }
    finally
    {
    //显式释放资源
    bmp.Dispose();
    g.Dispose();
    }
    }
    }



  • 相关阅读:
    <Ajax> 四. get请求(验证用户名是否存在)
    <Ajax> 三. 前端和后端通过表单数据交互
    <Ajax> 一. PHP基本使用和基本数据类型
    <Ajax> 二. PHP选择语句和循环语句
    <Bootstrap> 学习笔记八. 导航栏和颁
    <Bootstrap> 学习笔记七. 下拉菜单和标签页
    <Bootstrap> 学习笔记六. 栅格系统使用案例
    <Bootstrap> 学习笔记五. 按钮组的使用
    <Bootstrap> 学习笔记三. 浮动的使用
    <Bootstrap> 学习笔记四. 表单组和输入框组的使用
  • 原文地址:https://www.cnblogs.com/superfeeling/p/2384903.html
Copyright © 2011-2022 走看看