收藏一段小的.net下的验证码片段

验证码

收藏一段小的.net下的验证码片段,以供以后参考。

 protected void Page_Load(object sender, EventArgs e)
    {
         //先产生数字串
         string checkCode = this.CreateRandomCode(6);
        //用session保存
         Session["CheckCode"] = checkCode;
      //作图
        CreateImage(checkCode);
       
    }
    private void CreateImage(string checkCode)
    {
        System.Drawing.Bitmap image = new System.Drawing.Bitmap(Convert.ToInt32(Math.Ceiling((decimal)(checkCode.Length * 14))), 22);
        Graphics g = Graphics.FromImage(image);
       

        try
        {
          
            Random random = new Random();
            g.Clear(Color.AliceBlue);
           
            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 System.Drawing.Font("Comic Sans MS", 12, System.Drawing.FontStyle.Bold);
            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, new SolidBrush(Color.Red), 2, 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);

            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();
        }
    }

    public string CreateRandomCode(int codeCount)
    {
        string allChar = "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";
        string[] allCharArray = allChar.Split(',');
        string randomCode = "";
        int temp = -1;

        Random rand = new Random();
        for (int i = 0; i < codeCount; i++)
        {
            if (temp != -1)
            {
                rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
            }
            int t = rand.Next(36);
            if (temp != -1 && temp == t)
            {
                return CreateRandomCode(codeCount);
            }
            temp = t;
            randomCode += allCharArray[t];
        }
        return randomCode;
    }

时间: 2024-10-26 16:46:37

收藏一段小的.net下的验证码片段的相关文章

GE段小缨:期待创造更美好的未来

本文讲的是 :   GE段小缨:期待创造更美好的未来 ,   GE作为全球知名的跨国公司,集互联.相应和预测之智,对推动我国传统工业的变革起到了重要作用,为我国实体经济的发展做出了巨大贡献.针对日前上海市政府制订的<关于创新驱动发展巩固提升实体经济能级的若干意见>(以下简称<若干意见>),GE中国总裁兼首席执行官段小缨对此表示,我们备受鼓舞,期待在政府的带领下,GE中国能够创造更美好的未来. GE:政府简政放权助力企业提高效率 通用电气(GE)公司系全球领先的数字化工业公司,GE中

从保安走向IT岗位的段小磊工位上贴满了励志便笺

从保安到IT精英,中国也有林书豪一样的励志故事.昨日微博上有消息称,腾讯北京分公司20楼前台一名保安经过层层面试被腾讯研究院录取,腾讯公司方面证实了该消息,公司董事会主席兼首席执行官马化腾(微博)也通过微博称其故事很励志. 这名保安名叫段小磊(英文名Dream),现已成为腾讯研究院的外聘员工,负责数据整理等基础工作.这个故事被知情人放到微博后迅速传播开来,很快被腾讯CEO马化腾看到并转发,两个小时内被转发20000多条,段小磊也被誉为"2012最励志保安". 保安熟悉所有员工名字 据腾

java新手问题,这段小代码是什么意思,起什么作用,希望说详细些,谢谢

问题描述 java新手问题,这段小代码是什么意思,起什么作用,希望说详细些,谢谢 public List getListBySQL(final String queryString) { try { List list = getHibernateTemplate().executeFind(new HibernateCallback() { public Object doInHibernate(Session session) throws HibernateException SQLExc

源代码-这段代码中的下划线,是什么意思?

问题描述 这段代码中的下划线,是什么意思? 这段代码中的下划线,是什么意思?>>呢? 解决方案 没有特殊意思,就是一个叫下划线的参数,这是lambda表达式,作为参数没有用到,所以随便写一个

请教下带验证码的网站怎么用php curl模拟登陆呢?

问题描述 请教下带验证码的网站怎么用php curl模拟登陆呢? www.xianbao5.com 这个网站用CURL post登录 谁会能教教我吗? 主要是怎么获取这个网站的验证码?人工输入也可以 我在抓包工具找到了验证码的网址,是 http://www.xianbao5.com/misc.php?mod=seccode&update=11212&idhash=cSB0PJ9T 但是不知道为什么直接在浏览器访问却没有东西! <?php header("content-Ty

thinkphp-Thinkphp框架下,验证码问题

问题描述 Thinkphp框架下,验证码问题 public function myses(){ import("ORG.Util.Date"); $Setime=session('time'); $Date=new Date; if($Setime!=NULL){ $diff=$Date->dateDiff("$Setime","s"); if($diff>=10){//判断是否过期 $Setime=$Date->dateAdd

删除WinPE下的“文档”、"收藏夹"小方法

  在定制自己的PE过程中经常需要添加或删除开始菜单下的"文档"."收藏夹"?下面为大家提供2种删除开始菜单下的"文档"."收藏夹"小方法: 一.修改explorer.exe比较简单直观. 二.修改shell32.dll的注册项: 01.//在开始菜单不显示[收藏夹] 02.PECMD REGI HKCUSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorerNoFavori

新手一段小代码不太理解,大家帮忙看一下

问题描述 我是个新手,正在学习C#,但碰到一些混淆的问题使我很困惑.在<.net编程先锋C#>第四章C#类型中,有这么一段程序:usingSystem;structIP{publicbyteb1,b2,b3,b4;}classTest{publicstaticvoidMain(){IPmyIP;myIP.b1=192;myIP.b2=168;myIP.b3=1;myIP.b4=101;Console.Write("{0}.{1}.",myIP.b1,myIP.b2);Con

乐视网改版完成小清新界面下的多屏战略

[赛迪网讯]8月8日消息,随着乐视网动漫频道改版上线,乐视网全站改版画上了完美句点,也为乐视网的多屏战略加足了马力.据悉,自今年3月乐视网宣布改版,到财经频道上线,再到"让小朋友都能迅速操作"的动漫频道大改版的收官,一个内容更全面.界面更友好.体验更舒适的乐视网展现在用户面前.目前,乐视网涵盖电影.电视剧.自制.动漫.体育等13个频道,今年在垂直领域还推出了财经频道,实现了内容覆盖更全,突出了乐视网的综合视频门户属性.改版后的乐视网更像是一个干净简洁的"小清新",采