亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

c#實現驗證碼功能

2019-11-17 02:47:21
字體:
來源:轉載
供稿:網友

c#實現驗證碼功能

一、驗證碼簡介 驗證碼功能一般是用于防止批量注冊的,不少網站為了防止用戶利用機器人自動注冊、登錄、灌水,都采用了驗證碼技術。所謂驗證碼,就是將一串隨機產生的數字或字母或符號或文字,生成一幅圖片, 圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網站驗證,驗證成功后才能使用某項功能。

常見的驗證碼有如下幾種: 1、純數字驗證碼,一般為四位隨機數字; 2、數字+字母驗證碼,一般從數字(0~9)和字母(A~Z和a~z)中隨機抽出幾個字符組成; 3、漢字驗證碼,相對而言,這種驗證碼比較少見一點,實現起來也相對復雜一些,但在不少網站中還是可以看到的;

二、驗證碼的實現 1、純數字驗證碼的實現 純數字驗證碼的實現相對比較簡單,可通過以下兩種方法來實現

        /// <summary>        /// 數字驗證碼         /// </summary>        /// <param name="codeCount">驗證碼的位數‘n’</param>        /// <returns>返回‘n’位驗證碼的字符串</returns>        PRivate static String GetRandomint(int codeCount)        {            Random random = new Random();            StringBuilder sbmin = new StringBuilder();            StringBuilder sbmax = new StringBuilder();            for (int i = 0; i < codeCount; i++)            {                sbmin.Append("1");                sbmax.Append("9");            }           return random.Next(Convert.ToInt32(sbmin.ToString()), Convert.ToInt32(sbmax.ToString())).ToString();        }

2、數字與字母組合字符串

字母與數字組合的字符串也比較簡單  可以按照自己的規則去生成大小寫字母

         /// <summary>        /// 生成驗證碼字符串         /// </summary>        /// <param name="codeLen">驗證碼字符長度</param>        /// <returns>返回驗證碼字符串</returns>        private static string MakeCode(int codeLen)        {            if (codeLen < 1)            {                return string.Empty;            }            int number;            StringBuilder sbCheckCode = new StringBuilder();            Random random = new Random();            for (int index = 0; index < codeLen; index++)            {                number = random.Next();                if (number % 2 == 0)                {                    sbCheckCode.Append((char)('0' + (char)(number % 10))); //生成數字                  }                else                {                    sbCheckCode.Append((char)('A' + (char)(number % 26))); //生成字母                  }            }            return sbCheckCode.ToString();        }

3、生成圖片流

原理:先生成驗證碼,然后把生成的驗證碼轉化為圖片流進行輸出

          ///<summary>         /// 獲取驗證碼圖片流         /// </summary>        /// <param name="checkCode">驗證碼字符串</param>        /// <returns>返回驗證碼圖片流</returns>        public static MemoryStream CreateCodeImg(string checkCode)        {            if (string.IsNullOrEmpty(checkCode))            {                return null;            }            Bitmap image = new Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);            Graphics graphic = Graphics.FromImage(image);            try            {                Random random = new Random();                graphic.Clear(Color.White);                int x1 = 0, y1 = 0, x2 = 0, y2 = 0;                for (int index = 0; index < 25; index++)                {                    x1 = random.Next(image.Width);                    x2 = random.Next(image.Width);                    y1 = random.Next(image.Height);                    y2 = random.Next(image.Height);                    graphic.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);                }                Font font = new Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));                System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Red, Color.DarkRed, 1.2f, true);                graphic.DrawString(checkCode, font, brush, 2, 2);                int x = 0;                int y = 0;                //畫圖片的前景噪音點                for (int i = 0; i < 100; i++)                {                    x = random.Next(image.Width);                    y = random.Next(image.Height);                    image.SetPixel(x, y, Color.FromArgb(random.Next()));                }                //畫圖片的邊框線                graphic.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);                //將圖片驗證碼保存為流Stream返回                System.IO.MemoryStream ms = new System.IO.MemoryStream();                image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);                return ms;            }            finally            {                graphic.Dispose();                image.Dispose();            }        }
   調用方法

在HttpHander的ProcessRequest中進行調用:pupublic void ProcessRequest(HttpContext context){     string code = MakeCode(5);     context.Response.ClearContent();     context.Response.ContentType = "image/Gif";     MemoryStream ms = CreateCodeImg(code);     if (null != ms)     {        context.Response.BinaryWrite(ms.ToArray());     }}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲美女av电影| 日韩h在线观看| 色综合久综合久久综合久鬼88| 国产精品欧美激情在线播放| 国产成人jvid在线播放| 亚洲视频精品在线| 成人性生交xxxxx网站| 国产精品入口免费视频一| 久久精品国产亚洲一区二区| 欧美日韩激情视频8区| 国产一区二区三区在线观看网站| 欧洲一区二区视频| 国产精品久久久久999| 国产69精品久久久久久| 中文字幕日韩av| 亚洲国产中文字幕在线观看| 成人福利网站在线观看11| 久热国产精品视频| 欧美一级大片视频| 日韩精品免费观看| 91亚洲精品久久久| 午夜精品久久久久久久男人的天堂| 国产亚洲精品美女| 精品小视频在线| 欧美夫妻性生活视频| 欧美一级淫片播放口| 深夜福利91大全| 午夜精品一区二区三区视频免费看| 欧美日韩一区二区免费在线观看| 日本高清不卡的在线| 97高清免费视频| 国产精品久久91| 国产日韩精品入口| 欧美性xxxx极品hd欧美风情| 欧美成人免费播放| 日韩精品免费看| 国产视频精品va久久久久久| 亚洲国产成人av在线| 精品毛片网大全| 在线中文字幕日韩| 午夜精品三级视频福利| 亚洲精品不卡在线| 欧美巨乳在线观看| 国产91色在线|免| 国产精品美女久久| 亚洲iv一区二区三区| 欧美大荫蒂xxx| 日韩欧美中文字幕在线播放| 欧美国产精品日韩| 日韩网站免费观看| 国产精品自产拍在线观| 欧美性受xxxx黑人猛交| 日韩欧美国产免费播放| 91色视频在线观看| 亚洲欧美精品中文字幕在线| 国产精品久久久久久久美男| 一区二区三区日韩在线| 欧美激情精品久久久久久| 亚洲最新av在线网站| 日韩免费av片在线观看| 久久亚洲影音av资源网| 欧美亚洲伦理www| 亚洲国产成人精品久久久国产成人一区| 国产精品视频自在线| 国产精品视频在线播放| 欧美高清不卡在线| 欧美有码在线观看视频| 日韩在线视频观看| 粉嫩av一区二区三区免费野| 国产热re99久久6国产精品| 国产成人久久精品| 国内精品久久影院| 欧美激情高清视频| 国产日韩视频在线观看| 亚洲国产精品99| 96pao国产成视频永久免费| 另类少妇人与禽zozz0性伦| 一级做a爰片久久毛片美女图片| 亚洲黄色在线看| 国产精品影片在线观看| 欧美高清视频免费观看| 久久久精品国产一区二区| 91久久在线观看| 欧美影院成年免费版| 亚洲欧美一区二区三区情侣bbw| 欧美极品第一页| 日韩一区二区在线视频| 色综合久久88色综合天天看泰| 亚洲另类图片色| 精品久久中文字幕久久av| 一区二区三区无码高清视频| 亚洲精品国产精品乱码不99按摩| 成人观看高清在线观看免费| 精品亚洲一区二区三区在线观看| 久久久久久久久久久网站| 亚洲欧美日韩精品久久| 亚洲专区中文字幕| 亚洲白虎美女被爆操| 91在线中文字幕| 国产日韩av在线| 欧美黑人一级爽快片淫片高清| 日产精品久久久一区二区福利| 精品av在线播放| 欧美贵妇videos办公室| 日韩中文字幕视频在线观看| 91亚洲人电影| 欧美在线激情视频| 97超级碰碰人国产在线观看| 欧美性猛交xxxx免费看| 欧美疯狂做受xxxx高潮| 国产区精品在线观看| 国内精品视频在线| 91精品国产一区| 91欧美精品成人综合在线观看| 日韩在线视频线视频免费网站| 91热精品视频| 国产精品久久久久免费a∨大胸| 自拍亚洲一区欧美另类| 98精品在线视频| 国产精彩精品视频| 欧美成人亚洲成人| 91成人在线播放| 国产97在线播放| 精品成人国产在线观看男人呻吟| 精品久久久久久国产91| 狠狠综合久久av一区二区小说| 亚洲一区二区在线播放| 成人激情视频在线| 亚洲qvod图片区电影| 亚洲欧美国产精品久久久久久久| 久久久免费观看| 国产综合视频在线观看| 美日韩精品免费视频| 亚洲电影在线观看| 亚洲免费视频网站| 麻豆乱码国产一区二区三区| 国产精品视频免费在线| 深夜福利国产精品| 国产精品电影观看| 国产成人亚洲精品| 亚洲天堂第二页| 97在线看免费观看视频在线观看| 国产午夜精品一区二区三区| 久久全国免费视频| 精品国偷自产在线视频| 国内成人精品一区| 久久在线免费视频| 成人福利在线视频| 91系列在线播放| 亚洲aaaaaa| 国产成人精品免费视频| 成人久久18免费网站图片| 97精品久久久中文字幕免费| 亚洲午夜未满十八勿入免费观看全集| 午夜精品三级视频福利| 国产精品欧美风情| 国产精品大片wwwwww| 成人羞羞国产免费| 精品在线欧美视频| 国产精品国模在线| 不卡av日日日| 国产丝袜精品第一页| 亚洲一区二区免费| 亲子乱一区二区三区电影|