• 用户登陆的验证码的制作


     

    添加命名空间:

    using System.Drawing;

     验证码的生成:

    protected void FormCheck()

        {

            //////先得到验证码的内容并且存放到会话中

            Random rand = new Random();

            int len = rand.Next(4, 6);//随机获得验证码的长度4-6

            char[] str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".ToCharArray();//将候选字符放入字符数组中

            System .Text .StringBuilder code=new System.Text.StringBuilder ();//用来保存显示的字符内容

            for (int i=0;i<len;i++)

            {

            code .Append (str [rand .Next (str.Length )]);

            }

            this.Session ["result"]=code.ToString () ;//将验证码存放到会话中

            ///////得到图像的大小

            Size imageSize = new Size();

            Font myFont = new Font("arial black", 20); //字体

            using (Bitmap bmp = new Bitmap(20, 15))

            { using (Graphics g=Graphics .FromImage (bmp ))

            {

             SizeF size=g.MeasureString (code.ToString () ,myFont,1000 );

                imageSize .Width =(int)size .Width +6;//得到高度和宽的

                imageSize .Height =(int)size .Height +5;

            }

            }

     

            /////创建验证码的图像

            using (Bitmap bmp=new Bitmap (imageSize .Width ,imageSize .Height ))

            {

            using (Graphics g=Graphics .FromImage (bmp ))

            {

                g.Clear(Color .White );

                g.DrawString  (code.ToString () ,myFont ,Brushes .Black ,new RectangleF (0,0,imageSize.Width ,imageSize .Height ));

            }

     

            int num = imageSize.Width * imageSize.Height * 30 / 100;

            for (int iCount = 0; iCount < num; iCount++)

            {

                // 在随机的位置使用随机的颜色设置图片的像素

                int x = rand.Next(imageSize.Width);

                int y = rand.Next(imageSize.Height);

                int r = rand.Next(255);

                int g = rand.Next(255);

                int b = rand.Next(255);

                Color c = Color.FromArgb(r, g, b);

                bmp.SetPixel(x, y, c);

            }//for                // 输出图片

            System.IO.MemoryStream ms = new System.IO.MemoryStream();

            bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png );

            this.Response.ContentType = "image/png";

            ms.WriteTo(this.Response.OutputStream);

            ms.Close();

            }

        }

     

    ///
            ///
    检查指定的文本是否匹配验证码
            ///
            ///
    要判断的文本
            ///
    是否匹配
            public static bool CheckCode( string text )
            {
            string txt = System.Web.HttpContext.Current.Session["checkcode"] as string ;
            return text == txt ;
            }

     

     

  • 相关阅读:
    Shrink / VACUUM Database Sample Code C#
    (转)Export .NET MSChart to Excel/PDF Using Report Viewer 2010
    VS2010中使用《WeifenLuo.WinFormsUI.Docking.dll》,类型 Universe 无法解析程序集
    Binding to a ComboBox using a DataTable and Linq
    elementui 点击Switch开关弹出对话框确认后再改变switch开关状态
    c# 获取ip和mac
    mysql 允许ip访问
    jdk下载
    vue video 动态地址 不能自动播放
    c# 取右侧固定N个字符,不足用0填充
  • 原文地址:https://www.cnblogs.com/janes/p/1249646.html
Copyright © 2020-2023  润新知