国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

詳解ASP.NET驗證碼的生成方法

來源:懂視網 責編:小采 時間:2020-11-27 22:37:33
文檔

詳解ASP.NET驗證碼的生成方法

詳解ASP.NET驗證碼的生成方法:一般驗證碼的生成方法都是相同的,主要的步驟都有兩步 第一步:隨機出一系統驗證碼的數字或字母,順便把隨機生成的數字或字母寫入Cookies 或者 Session。 第二步:用第一步隨機出來的數字或字母來合成圖片。 可以看出來驗證碼的復雜度主要是第二步來完成,你可
推薦度:
導讀詳解ASP.NET驗證碼的生成方法:一般驗證碼的生成方法都是相同的,主要的步驟都有兩步 第一步:隨機出一系統驗證碼的數字或字母,順便把隨機生成的數字或字母寫入Cookies 或者 Session。 第二步:用第一步隨機出來的數字或字母來合成圖片。 可以看出來驗證碼的復雜度主要是第二步來完成,你可

一般驗證碼的生成方法都是相同的,主要的步驟都有兩步

第一步:隨機出一系統驗證碼的數字或字母,順便把隨機生成的數字或字母寫入Cookies 或者 Session。

第二步:用第一步隨機出來的數字或字母來合成圖片。

可以看出來驗證碼的復雜度主要是第二步來完成,你可以根據自己所要的復雜度來設定。

我們一起來看看:

 第一步:隨機生成數字或字母的方法

/// <summary>
 /// 生成驗證碼的隨機數
 /// </summary>
 /// <returns>返回五位隨機數</returns>
 private string GenerateCheckCode()
 {
 int number;
 char code;
 string checkCode = String.Empty;

 Random random = new Random();

 for (int i = 0; i < 5; 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));//寫入COOKIS
 Session["CheckCode"] = checkCode; //寫入Session,可以任意選一下
 return checkCode;
 }

第二步:生成圖片

/// <summary>
 /// 生成驗證碼圖片
 /// </summary>
 /// <param name="checkCode"></param>
 private void CreateCheckCodeImage(string checkCode)
 {
 if (checkCode == null || checkCode.Trim() == String.Empty)
 return;

 Bitmap image = new 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));
 LinearGradientBrush brush = new 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);

 MemoryStream ms = new MemoryStream();
 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
 Response.ClearContent();
 Response.ContentType = "image/Gif";
 Response.BinaryWrite(ms.ToArray());
 }
 finally
 {//釋放對象資源
 g.Dispose();
 image.Dispose();
 }

*完整程序

先在VS2005里面的項目里面添加一個 checkCode.aspx 文件,在checkCode.aspx.cs 代碼文件中添加如下完整代碼

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.IO;
using System.Drawing.Drawing2D;

public partial class checkCode : System.Web.UI.Page
{
 protected void Page_Load(object sender, EventArgs e)
 {
 CreateCheckCodeImage(GenerateCheckCode());//調用下面兩個方法;
 }

 /// <summary>
 /// 生成驗證碼的隨機數
 /// </summary>
 /// <returns>返回五位隨機數</returns>
 private string GenerateCheckCode()
 {
 int number;
 char code;
 string checkCode = String.Empty;

 Random random = new Random();

 for (int i = 0; i < 5; 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));//寫入COOKIS
 Session["CheckCode"] = checkCode; //寫入Session,可以任意選一下
 return checkCode;
 }


 /// <summary>
 /// 生成驗證碼圖片
 /// </summary>
 /// <param name="checkCode"></param>
 private void CreateCheckCodeImage(string checkCode)
 {
 if (checkCode == null || checkCode.Trim() == String.Empty)
 return;

 Bitmap image = new 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));
 LinearGradientBrush brush = new 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);

 MemoryStream ms = new MemoryStream();
 image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
 Response.ClearContent();
 Response.ContentType = "image/Gif";
 Response.BinaryWrite(ms.ToArray());
 }
 finally
 {//釋放對象資源
 g.Dispose();
 image.Dispose();
 }
 }

}

上面生成驗證碼的頁面都做好了,我們來調用看看:

在你需要用到驗證碼的地方加了Image控件

<asp:Image ID="Image1" runat="server" ImageUrl="~/checkCode.aspx" />

這樣驗證碼就會顯示到Image控件上面了!

顯示弄好了,當然我們要判斷一下用戶的輸入是否正確!

只要我們取得用戶輸入的值跟Cookis或者Session對比就OK了

取Cookies的值 Request.Cookies["CheckCode"].Value

取Session的值 Session["CheckCode"].ToString()    (最好先判斷Session是否空)

如果不要區分大小寫的話,就把用戶輸入的值和Cookies或Session的值都轉成大寫或都小寫 

附用法

protected void Button1_Click(object sender, EventArgs e)
 {
 if (Request.Cookies["CheckCode"].Value == TextBox1.Text.Trim().ToString())
 {
 Response.Write("Cookies is right");
 }
 else
 {
 Response.Write("Cookies is wrong");
 }

 if (Session["CheckCode"] != null)
 {
 if (Session["CheckCode"].ToString().ToUpper() == TextBox1.Text.Trim().ToString().ToUpper())
 //這樣寫可以不能區分大小寫
 {
 Response.Write("Session is right");

 }
 else
 {
 Response.Write("Session is wrong");
 }
 }
 }

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

詳解ASP.NET驗證碼的生成方法

詳解ASP.NET驗證碼的生成方法:一般驗證碼的生成方法都是相同的,主要的步驟都有兩步 第一步:隨機出一系統驗證碼的數字或字母,順便把隨機生成的數字或字母寫入Cookies 或者 Session。 第二步:用第一步隨機出來的數字或字母來合成圖片。 可以看出來驗證碼的復雜度主要是第二步來完成,你可
推薦度:
標簽: 生成 方法 產生
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 欧美一区二区三区不卡免费 | 在线观看亚洲视频 | 亚洲va国产va欧美va综合 | 国产精选免费视频 | 日韩精品在线视频观看 | 99久久精品国产一区二区三区 | 永久免费毛片 | 中文字幕韩国电影 | 在线观看精品国产 | 国产高清视频在线观看 | 国产高清免费在线观看 | 色视频久久 | 亚洲一区二区三区在线免费观看 | 国产亚洲一区二区精品 | 亚洲国产精品婷婷久久久久 | 91久久国产综合精品女同国语 | 国产在线播放一区 | 国产精品亚洲国产三区 | 美女一级a毛片免费观看 | 毛片视频网站 | 国产精品亚洲精品日韩动图 | 91精品一区二区三区在线播放 | 日韩首页 | 久久久久亚洲精品成人网小说 | 精品一区二区三区四区五区六区 | 欧美日韩高清在线观看一区二区 | 日韩一区二区免费视频 | 亚洲成人一区 | 国产丝袜在线视频 | 亚洲一区二区三区91 | 美女视频黄a视频免费全过程在线 | 亚洲1页 | 一本综合久久国产二区 | 好看的电影网站亚洲一区 | 国产网站在线免费观看 | 国产成人久久一区二区三区 | 久久成人a毛片免费观看网站 | 伊人网2021 | 免费观看欧美一区二区三区 | 日本不卡视频一区二区 | 亚洲日韩欧美综合 |