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

首頁 > 編程 > C# > 正文

asp.net之生成驗證碼的方法集錦(一)

2020-01-24 01:34:30
字體:
來源:轉載
供稿:網友

現在很多網站都有注冊登錄的頁面,為了更好的滿足用戶體驗和網站的安全性,很多網站都采用動態生成的圖形碼或者是附加碼進行驗證,下面把生成驗證碼的方法給大家整理如下.

實現驗證技術就是在服務器端生成一個隨機數,并將其保存在內存中,發送給瀏覽器,并以圖片的形式提交給用戶。之前在做項目過程中,完成了一個利用script進行用戶注冊及登錄的驗證碼時,發現有各種生成驗證碼的方式,下面主要是幾種不同的生成驗證碼的方式:

1、繪制純數字的網站驗證碼

本實例實現的是數字驗證碼技術,即隨機生成4位數字作為驗證碼。在開發繪制會員登錄驗證模塊時可以使用數字驗證碼技術。

■設計過程

在一個新建的窗體CheckCode.aspx中編寫生成數字驗證碼的方法:

private string RndNum() { int number; char code; string checkCode = String.Empty; System.Random random = new Random(); for (int i = 0; i < 4; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("yzmcode", checkCode)); return checkCode; } private void CreateCheckCodeImage(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)), 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 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 < 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(); } } 

然后在Page_Load中調用CreateCheckCodeImage():
 

protected void Page_Load(object sender, EventArgs e) { this.CreateCheckCodeImage(RndNum()); }那么在我們登錄的窗口中就可以通過簡單的控件:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> <asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/CheckCode.aspx" Width="50" Height="30"/><asp:Label ID="Label1" runat="server" Text="看不清楚?點擊圖片換一個" Height="16px"  Font-Size="Small" ForeColor="Red"></asp:Label> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />在Button1_Click中對驗證碼輸入的正確性進行判斷:protected void Button1_Click(object sender, EventArgs e){ if (String.Compare(Request.Cookies["yzmcode"].Value, TextBox1.Text, true) != 0) { Response.Write("<script>alert('驗證碼錯誤!')</script>"); } else Response.Write("<script>alert('驗證碼正確!')</script>");}

2、繪制數字與字母組合的網站驗證碼

和純數字的很相似,具體區別在隨機生成字符串的方法中

 

private string GenerateCheckCode() { int number; char code; string checkCode = String.Empty; Random random = new Random(); for (int i = 0; i < 4; i++) { number = random.Next(); if (number % 2 == 0) code = (char)('0' + (char)(number % 10)); else code = (char)('A' + (char)(number % 26)); checkCode += code.ToString(); } Response.Cookies.Add(new HttpCookie("CheckCode", checkCode)); return checkCode; }

字符串生成后,接下來就是將該字符串繪制成圖片顯示出來。代碼如下:

private void CreateCheckCodeImage(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)), 22); Graphics g = Graphics.FromImage(image); try { //生成隨機生成器 Random random = new Random(); //清空圖片背景色 g.Clear(Color.White); //畫圖片的背景噪音線 for (int i = 0; i < 2; 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.Black), x1, y1, x2, y2); } Font font = new System.Drawing.Font("Arial", 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, brush, 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(); } } 

在登錄的窗口進行驗證碼輸入是否正確的判斷:

protected void Button1_Click(object sender, EventArgs e) { HttpCookie cookie = Request.Cookies["CheckCode"]; if (cookie.Value == this.TextBox1.Text.Trim()) { Response.Write("<script>alert('驗證碼正確!')</script>"); } else { Response.Write("<script>alert('驗證碼錯誤!')</script>");  } }

那么有關于數字與字母組合的網站驗證碼就生成了。

3、四則運算式的驗證碼

其他的和數字和字母混合生成的驗證碼相似,我就不寫了,具體區別在隨機生成四則運算式的方法中,如下:

 

private string GenerateCheckCode() { Random rd = new Random(); int Results = 0; int Num1 = rd.Next(10); int Num2 = rd.Next(10); string Expressions = ""; int F = (rd.Next(4) + 1); switch (F) { case 1: Results = Num1 + Num2; Expressions = Num1 + "+" + Num2; break; case 2: Results = Num1 - Num2; Expressions = Num1 + "-" + Num2; break; case 3: Results = Num1 * Num2; Expressions = Num1 + "*" + Num2; break; case 4: if (Num2 > 0) { Results = Convert.ToInt16(Num1 / Num2); Expressions = Num1 + "/" + Num2; } else { Results = Num1; Expressions = Num1 + "/1"; } break; } Session["Code"] = Results.ToString(); return Expressions;}

此篇文章主要介紹了三種方法生成驗證碼,希望大家喜歡。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产性猛交xxxx免费看久久| 欧美成人激情在线| 中文字幕精品国产| 亚洲女人初尝黑人巨大| 中文字幕视频一区二区在线有码| 亚洲精品福利在线| 97在线视频免费看| 亚洲精品电影久久久| 亚洲精品日韩激情在线电影| 欧美激情精品久久久| 成人国产精品久久久久久亚洲| 国产精品一久久香蕉国产线看观看| 韩国三级日本三级少妇99| 91免费观看网站| 亚洲黄色片网站| 精品女同一区二区三区在线播放| 91成人天堂久久成人| 国产91在线播放| 成人福利视频在线观看| 亚洲激情视频网| 久久精品国产69国产精品亚洲| 欧美夫妻性生活视频| 最新日韩中文字幕| 国产精品99蜜臀久久不卡二区| 久久精品视频在线观看| 欧美性极品少妇精品网站| 九九精品视频在线观看| 91高清免费视频| 日韩中文娱乐网| 中文字幕亚洲专区| 亚洲综合在线播放| 91精品啪在线观看麻豆免费| 亚洲一区二区久久| 日韩视频免费中文字幕| 久久亚洲精品一区| 久久久久五月天| 欧美日韩另类字幕中文| 亚洲人成电影网站色…| 最新91在线视频| 亚洲天堂精品在线| 亚洲第一级黄色片| 91精品啪在线观看麻豆免费| 国产成人高潮免费观看精品| 性色av一区二区咪爱| 色在人av网站天堂精品| 欧美在线视频一二三| 57pao精品| 国产精品自拍网| 97欧美精品一区二区三区| 福利二区91精品bt7086| 国产专区精品视频| 国产精品视频播放| 孩xxxx性bbbb欧美| 欧美肥婆姓交大片| 亚洲男人天堂网站| 亚洲黄色在线观看| 国产免费成人av| 国产精品av免费在线观看| 日韩激情视频在线播放| 日韩69视频在线观看| 日韩的一区二区| 国产成人在线播放| 国产精品美女呻吟| 97国产成人精品视频| 国产日韩综合一区二区性色av| 亚洲欧洲第一视频| 国产精品亚洲自拍| 狠狠躁18三区二区一区| 日韩精品亚洲视频| 国产亚洲精品一区二555| 国产精品视频久久| 色综合久久中文字幕综合网小说| 亚洲美女激情视频| 国产精品视频内| 97超碰国产精品女人人人爽| 欧美成aaa人片在线观看蜜臀| 超碰日本道色综合久久综合| 亚洲欧洲日产国码av系列天堂| 大胆欧美人体视频| 日韩一区二区福利| 日韩中文综合网| 国产精品久久久久久搜索| 亚洲国产福利在线| 亚洲jizzjizz日本少妇| 亚洲精品在线观看www| 国产精品美女在线| 亚洲精品之草原avav久久| 成人国产在线视频| 国产精品美女久久久久久免费| 国产国语刺激对白av不卡| 国内精品一区二区三区| 亚洲天堂视频在线观看| 91久久在线观看| 日韩av片电影专区| 欧美日韩国产精品一区| 国产精品27p| 欧美性极品xxxx娇小| 亚洲色图欧美制服丝袜另类第一页| 日韩成人中文字幕在线观看| 亚洲国产精品女人久久久| 国产91对白在线播放| 亚洲成人精品久久| 91免费的视频在线播放| 欧美日韩国产中文精品字幕自在自线| 国产精品∨欧美精品v日韩精品| 成人av色在线观看| 亚洲片在线观看| 成人黄色av网| 色综合久久精品亚洲国产| 国产精品xxx视频| 国产精品三级美女白浆呻吟| 中文字幕亚洲综合久久筱田步美| 亚洲一区二区三区四区视频| 日韩av网址在线观看| 国产不卡av在线| 欧美在线一区二区视频| 精品亚洲一区二区三区四区五区| 欧美第一淫aaasss性| 欧美三级xxx| 国产成人av网址| 亚洲欧洲偷拍精品| 亚洲国产美女久久久久| 9.1国产丝袜在线观看| 久久久久久久久久国产精品| 中国china体内裑精亚洲片| 亚洲国产精品久久91精品| 亚洲精品日韩av| 成人在线精品视频| 岛国av午夜精品| 久久av在线播放| 欧美精品videossex88| 精品久久久久久国产91| 91影视免费在线观看| 亚洲精品98久久久久久中文字幕| 在线观看成人黄色| 正在播放欧美一区| 亚洲人成伊人成综合网久久久| 国产美女91呻吟求| 亚洲欧美激情四射在线日| 亚洲欧洲午夜一线一品| 国产97在线视频| 亚洲综合在线中文字幕| 国产精品欧美亚洲777777| 欧美一级视频一区二区| 国产成人综合久久| 亚洲午夜精品久久久久久性色| 亚洲一区二区三| 国产亚洲精品综合一区91| 菠萝蜜影院一区二区免费| 欧美午夜影院在线视频| 日本欧美爱爱爱| 国产亚洲欧美日韩一区二区| 国产精品一区专区欧美日韩| 亚洲国语精品自产拍在线观看| 亚洲一级一级97网| 91免费国产网站| 日韩中文视频免费在线观看| 九九久久精品一区| 国产在线日韩在线| 国产日韩欧美视频在线| 隔壁老王国产在线精品| 国产成人精品久久二区二区| 国产亚洲美女精品久久久| 精品一区精品二区|