全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

asp.net mvc验证码类使用

验证码类

namespace QJW.VerifyCode
{
  //用法:
  //public FileContentResult CreateValidate()
  //{
  //  ValidateCode vCode = new ValidateCode();
  //  string code = vCode.CreateValidateCode(5);
  //  Session["ValidateCode"] = code;
  //  byte[] bytes = vCode.CreateValidateGraphic(code);
  //  return File(bytes, "image/JPEG");
  //}


  public class ValidateCode
  {
    public ValidateCode()
    {
    }
    /// <summary>
    /// 验证码的最大长度
    /// </summary>
    public int MaxLength
    {
      get { return 10; }
    }
    /// <summary>
    /// 验证码的最小长度
    /// </summary>
    public int MinLength
    {
      get { return 1; }
    }
    /// <summary>
    /// 生成验证码
    /// </summary>
    /// <param name="length">指定验证码的长度</param>
    /// <returns></returns>
    public string CreateValidateCode(int length)
    {
      int[] randMembers = new int[length];
      int[] validateNums = new int[length];
      string validateNumberStr = "";
      //生成起始序列值
      int seekSeek = unchecked((int)DateTime.Now.Ticks);
      Random seekRand = new Random(seekSeek);
      int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
      int[] seeks = new int[length];
      for (int i = 0; i < length; i++)
      {
        beginSeek += 10000;
        seeks[i] = beginSeek;
      }
      //生成随机数字
      for (int i = 0; i < length; i++)
      {
        Random rand = new Random(seeks[i]);
        int pownum = 1 * (int)Math.Pow(10, length);
        randMembers[i] = rand.Next(pownum, Int32.MaxValue);
      }
      //抽取随机数字
      for (int i = 0; i < length; i++)
      {
        string numStr = randMembers[i].ToString();
        int numLength = numStr.Length;
        Random rand = new Random();
        int numPosition = rand.Next(0, numLength - 1);
        validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
      }
      //生成验证码
      for (int i = 0; i < length; i++)
      {
        validateNumberStr += validateNums[i].ToString();
      }
      return validateNumberStr;
    }
    /// <summary>
    /// 创建验证码的图片
    /// </summary>
    /// <param name="containsPage">要输出到的page对象</param>
    /// <param name="validateNum">验证码</param>
    public byte[] CreateValidateGraphic(string validateCode)
    {
      Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 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.Silver), x1, y1, x2, y2);
        }
        Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
        LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
         Color.Blue, Color.DarkRed, 1.2f, true);
        g.DrawString(validateCode, font, brush, 3, 2);
        //画图片的前景干扰点
        for (int i = 0; i < 100; 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);
        //保存图片数据
        MemoryStream stream = new MemoryStream();
        image.Save(stream, ImageFormat.Jpeg);
        //输出图片流
        return stream.ToArray();
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
    /// <summary>
    /// 得到验证码图片的长度
    /// </summary>
    /// <param name="validateNumLength">验证码的长度</param>
    /// <returns></returns>
    public static int GetImageWidth(int validateNumLength)
    {
      return (int)(validateNumLength * 12.0);
    }
    /// <summary>
    /// 得到验证码的高度
    /// </summary>
    /// <returns></returns>
    public static double GetImageHeight()
    {
      return 22.5;
    }
  }
}

使用方法

    public FileContentResult CreateValidate()
    {
      ValidateCode vCode = new ValidateCode();
      string code = vCode.CreateValidateCode(5);
      Session["ValidateCode"] = code;
      byte[] bytes = vCode.CreateValidateGraphic(code);

      return File(bytes, "image/JPEG");
    }

HTML
<a href="javascript:;" onclick="reloadcode();"><img id="safecode" src="/common/CreateValidate" alt="" /></a> 
视图JS 

function reloadcode() {
    var verify = document.getElementById('safecode');
    verify.setAttribute('src', '/common/CreateValidate?' + Math.random());
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# asp.net  # mvc  # 验证码  # MVC使用极验验证制作登录验证码学习笔记7  # ASP.NET MVC验证码功能实现代码  # mvc实现图片验证码功能  # 大家多多  # 清空  # 背景色  # seeks  # MaxValue  # Math  # Pow  # rand  # pownum  # beginSeek  # seekSeek  # unchecked  # validateNums  # validateNumberStr  # Random  # seekRand  # DateTime  # Ticks  # Bitmap 


相关文章: Android使用GridView实现日历的简单功能  官网自助建站系统:SEO优化+多语言支持,快速搭建专业网站  企业网站制作公司网页,推荐几家专业的天津网站制作公司?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何访问已购建站主机并解决登录问题?  济南专业网站制作公司,济南信息工程学校怎么样?  高性价比服务器租赁——企业级配置与24小时运维服务  如何通过.red域名打造高辨识度品牌网站?  如何通过老薛主机一键快速建站?  Swift中循环语句中的转移语句 break 和 continue  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  网站制作专业公司有哪些,如何制作一个企业网站,建设网站的基本步骤有哪些?  建站主机选哪种环境更利于SEO优化?  详解jQuery中基本的动画方法  智能起名网站制作软件有哪些,制作logo的软件?  成都网站制作公司哪家好,四川省职工服务网是做什么用?  头像制作网站在线制作软件,dw网页背景图像怎么设置?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  网站制作的软件有哪些,制作微信公众号除了秀米还有哪些比较好用的平台?  如何在西部数码注册域名并快速搭建网站?  制作企业网站建设方案,怎样建设一个公司网站?  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?  在线流程图制作网站手机版,谁能推荐几个好的CG原画资源网站么?  如何在阿里云ECS服务器部署织梦CMS网站?  Python文件管理规范_工程实践说明【指导】  在线制作视频的网站有哪些,电脑如何制作视频短片?  如何用狗爹虚拟主机快速搭建网站?  如何通过万网虚拟主机快速搭建网站?  常州自助建站费用包含哪些项目?  如何通过可视化优化提升建站效果?  如何制作算命网站,怎么注册算命网站?  如何用免费手机建站系统零基础打造专业网站?  非常酷的网站设计制作软件,酷培ai教育官方网站?  如何使用Golang table-driven基准测试_多组数据测量函数效率  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  网站设计制作公司地址,网站建设比较好的公司都有哪些?  如何在腾讯云免费申请建站?  简单实现Android文件上传  兔展官网 在线制作,怎样制作微信请帖?  南京做网站制作公司,南京哈发网络有限公司,公司怎么样,做网页美工DIV+CSS待遇怎么样?  高防服务器租用指南:配置选择与快速部署攻略  建站之星伪静态规则如何正确配置?  定制建站流程解析:需求评估与SEO优化功能开发指南  专业公司网站制作公司,用什么语言做企业网站比较好?  建站之星×万网:智能建站系统+自助建站平台一键生成  网站制作与设计教程,如何制作一个企业网站,建设网站的基本步骤有哪些?  微信网站制作公司有哪些,民生银行办理公司开户怎么在微信网页上查询进度?  如何在局域网内绑定自建网站域名? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。