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

首頁 > 編程 > .NET > 正文

asp.net 驗證碼生成和刷新及驗證

2024-07-10 13:19:09
字體:
來源:轉載
供稿:網友
驗證碼技術是為了防止暴力破解等而設定的。現在一般的網站注冊等都提供驗證碼功能,特別是騰訊更是長長的一串。文中參考了別人的代碼。有了就沒有必要再寫了??梢宰x一下。不過我測試時發現了兩次PageLoad的問題。注釋了兩句即可。同時修改了namespaces。同時提供完整的驗證說明:
1 新建VerifyCode.aspx
cs文件代碼如下:

復制代碼 代碼如下:


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Text;
/**///// <summary>
/// 頁面驗證碼程序
/// 使用:在頁面中加入HTML代碼 <img src="VerifyCode.aspx">
/// </summary>
public partial class VerifyCode : System.Web.UI.Page
...{
static string[] FontItems = new string[] ...{ "Arial",
"Helvetica",
"Geneva",
"sans-serif",
"Verdana"
};
static Brush[] BrushItems = new Brush[] ...{ Brushes.OliveDrab,
Brushes.ForestGreen,
Brushes.DarkCyan,
Brushes.LightSlateGray,
Brushes.RoyalBlue,
Brushes.SlateBlue,
Brushes.DarkViolet,
Brushes.MediumVioletRed,
Brushes.IndianRed,
Brushes.Firebrick,
Brushes.Chocolate,
Brushes.Peru,
Brushes.Goldenrod
};
static string[] BrushName = new string[] ...{ "OliveDrab",
"ForestGreen",
"DarkCyan",
"LightSlateGray",
"RoyalBlue",
"SlateBlue",
"DarkViolet",
"MediumVioletRed",
"IndianRed",
"Firebrick",
"Chocolate",
"Peru",
"Goldenrod"
};
private static Color BackColor = Color.White;
private static Pen BorderColor = Pens.DarkGray;
private static int Width = 52;
private static int Height = 21;
private Random _random;
private string _code;
private int _brushNameIndex;
override protected void OnInit(EventArgs e)
...{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
//InitializeComponent();
//base.OnInit(e);
}
/**//**//**//// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
...{
//this.Load += new System.EventHandler(this.Page_Load);
}
/**//// <summary>
///
/// </summary>
/// <param></param>
/// <param></param>
public void Page_Load(object sender, System.EventArgs e)
...{
if (!IsPostBack)
...{
//
// TODO : initialize
//
this._random = new Random();
this._code = GetRandomCode();
//
// TODO : use Session["code"] save the VerifyCode
//
Session["code"] = this._code;
//
// TODO : output Image
//
this.SetPageNoCache();
this.OnPaint();
}
}
/**//**//**//// <summary>
/// 設置頁面不被緩存
/// </summary>
private void SetPageNoCache()
...{
Response.Buffer = true;
Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
Response.Expires = 0;
Response.CacheControl = "no-cache";
Response.AppendHeader("Pragma","No-Cache");
}
/**//**//**//// <summary>
/// 取得一個 4 位的隨機碼
/// </summary>
/// <returns></returns>
private string GetRandomCode()
...{
return Guid.NewGuid().ToString().Substring(0, 4);
}
/**//**//**//// <summary>
/// 隨機取一個字體
/// </summary>
/// <returns></returns>
private Font GetFont()
...{
int fontIndex = _random.Next(0, FontItems.Length);
FontStyle fontStyle = GetFontStyle(_random.Next(0, 2));
return new Font(FontItems[fontIndex], 12, fontStyle);
}
/**//**//**//// <summary>
/// 取一個字體的樣式
/// </summary>
/// <param></param>
/// <returns></returns>
private FontStyle GetFontStyle(int index)
...{
switch (index)
...{
case 0:
return FontStyle.Bold;
case 1:
return FontStyle.Italic;
default:
return FontStyle.Regular;
}
}
/**//**//**//// <summary>
/// 隨機取一個筆刷
/// </summary>
/// <returns></returns>
private Brush GetBrush()
...{
int brushIndex = _random.Next(0, BrushItems.Length);
_brushNameIndex = brushIndex;
return BrushItems[brushIndex];
}
/**//**//**//// <summary>
/// 繪畫事件
/// </summary>
private void OnPaint()
...{
Bitmap objBitmap = null;
Graphics g = null;
try
...{
objBitmap = new Bitmap(Width, Height);
g = Graphics.FromImage(objBitmap);
Paint_Background(g);
Paint_Text(g);
Paint_TextStain(objBitmap);
Paint_Border(g);
objBitmap.Save(Response.OutputStream, ImageFormat.Gif);
Response.ContentType = "image/gif";
}
catch ...{}
finally
...{
if (null != objBitmap)
objBitmap.Dispose();
if (null != g)
g.Dispose();
}
}
/**//**//**//// <summary>
/// 繪畫背景顏色
/// </summary>
/// <param></param>
private void Paint_Background(Graphics g)
...{
g.Clear(BackColor);
}
/**//**//**//// <summary>
/// 繪畫邊框
/// </summary>
/// <param></param>
private void Paint_Border(Graphics g)
...{
g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1);
}
/**//**//**//// <summary>
/// 繪畫文字
/// </summary>
/// <param></param>
private void Paint_Text(Graphics g)
...{
g.DrawString(_code, GetFont(), GetBrush(), 3, 1);
}
/**//**//**//// <summary>
/// 繪畫文字噪音點
/// </summary>
/// <param></param>
private void Paint_TextStain(Bitmap b)
...{
for (int n=0; n<30; n++)
...{
int x = _random.Next(Width);
int y = _random.Next(Height);
b.SetPixel(x, y, Color.FromName(BrushName[_brushNameIndex]));
}
}
}


2 頁面引用:
<asp:Image src="VerifyCode.aspx" runat="server" />
一般需要同時提供刷新功能(看不清楚換一張),代碼如下
<asp:Image src="VerifyCode.aspx" runat="server" />  <A href="javascript:getimgcode()">刷新驗證碼</A>
如使用了母版頁,則用如下代碼:
<img src="VerifyCode.aspx" /> <%--<asp:Image src="VerifyCode.aspx" runat="server" />--%>
  <A href="javascript:getimgcode()">刷新驗證碼</A>
超鏈接對應的javascript如下:
<script language="javascript" type="text/javascript">
function getimgcode()
{
var getimagecode = document.getElementById("getcode");
getimagecode.src = "VerifyCode.aspx";
}
</script>
3 判斷驗證
上述代碼是將驗證碼存貯在Session中,用code來標志。讀取代碼Session["code"].ToString();
使用中,我們只需要比較Session["code"].ToString()和文本框輸入的串(TextBoxCode.Text)是否相同即可進行判斷。
if(Session["code"].ToString().Trim().Equals(TextBoxCode.Text.Trim()))
...{
Response.Write("Success");
}
測試通過! 
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产精品久久久久| 国产精品美女主播| 另类少妇人与禽zozz0性伦| 国产成人精品综合久久久| 国产91精品视频在线观看| 91免费高清视频| 精品国产一区久久久| 青青在线视频一区二区三区| 国产美女精品视频免费观看| 黄色一区二区三区| 欧洲日韩成人av| 日韩一区二区精品视频| 色综合久综合久久综合久鬼88| 久久久91精品| 久久成人人人人精品欧| 国产精品视频在线播放| 欧美日韩亚洲系列| 亚洲日本成人女熟在线观看| 国产成人亚洲综合青青| 国产视频观看一区| 中文字幕精品影院| 青青精品视频播放| 欧美—级a级欧美特级ar全黄| 欧美日韩高清区| 日韩成人网免费视频| 97视频在线免费观看| 亚洲成av人影院在线观看| 国产精品久久久久福利| 亚洲欧美国产精品| 91色在线观看| 欧美在线观看一区二区三区| 欧美日韩不卡合集视频| 亚洲剧情一区二区| 中文国产亚洲喷潮| 精品一区二区电影| 97激碰免费视频| 亚洲老司机av| 美女国内精品自产拍在线播放| 亚州av一区二区| 日韩欧美视频一区二区三区| 久久男人的天堂| 国产在线精品播放| 亚洲国产精品va| 国产精品免费小视频| 国产精品免费电影| 亚洲国产成人在线视频| 欧美在线日韩在线| 国产视频亚洲精品| 黄色成人av在线| 亚洲免费av网址| 一本色道久久综合亚洲精品小说| 国产98色在线| 亚洲奶大毛多的老太婆| 国语自产精品视频在免费| 欧美xxxx综合视频| 国产福利精品av综合导导航| 欧美激情亚洲综合一区| 欧美激情区在线播放| 亚洲qvod图片区电影| 在线视频欧美日韩| 久久精品国产一区| 丰满岳妇乱一区二区三区| 欧美极品少妇xxxxⅹ免费视频| 日韩欧美亚洲成人| 久久精品视频在线播放| 91国产一区在线| 一区二区日韩精品| 成人黄色在线观看| 亚洲欧美一区二区三区四区| 国产精品aaaa| 日韩一区av在线| 久久久久久av| 中文字幕精品一区久久久久| 91国在线精品国内播放| 国产成人在线精品| 亚洲国产高清高潮精品美女| 亚洲精品av在线播放| 91禁外国网站| 亚洲电影免费观看| 亚洲精品99久久久久中文字幕| 欧美不卡视频一区发布| 中文字幕日韩在线观看| 国产精品一区二区av影院萌芽| 亚洲日韩中文字幕| 538国产精品一区二区免费视频| 久久不射热爱视频精品| 欧美日韩国产第一页| 国产精品国模在线| 亚洲mm色国产网站| 国产精品夜色7777狼人| 国产精品久久久久久亚洲影视| 亚洲福利视频在线| 青青久久aⅴ北条麻妃| 久久久国产一区二区| 日韩av影视在线| 亚洲aa中文字幕| 中文字幕久久精品| 1769国内精品视频在线播放| 亚洲欧洲日产国产网站| 欧美精品videossex88| 欧美日在线观看| 亚洲视频在线免费观看| 亚洲美女性视频| 亚洲视频在线免费看| 日韩av电影手机在线观看| 欧美日在线观看| 成人激情视频在线观看| 亚洲第一综合天堂另类专| 亚洲欧美国产一本综合首页| 日韩av综合中文字幕| 欧美高清电影在线看| 国产成人精品久久二区二区91| 亚洲2020天天堂在线观看| 日韩av在线免费| 亚洲性视频网址| 亚洲免费伊人电影在线观看av| 亚洲国产精品一区二区久| 国内精品伊人久久| 日韩av一区在线| 精品国产一区二区三区在线观看| 国产欧美精品一区二区三区-老狼| 最新国产成人av网站网址麻豆| 亚洲精品综合精品自拍| 国产z一区二区三区| 国产精品人成电影在线观看| 亚洲精品国产精品自产a区红杏吧| 国产日韩精品在线| 亚洲网址你懂得| 91亚洲精华国产精华| 97成人在线视频| 日本电影亚洲天堂| 亚洲人成在线一二| 97精品国产aⅴ7777| 欧美午夜性色大片在线观看| 欧美自拍视频在线| 精品久久久久久久久久久久| 日韩欧美aⅴ综合网站发布| 91免费高清视频| 91色在线观看| 日韩69视频在线观看| 久久手机精品视频| 国产精品99久久久久久久久久久久| 亚洲国产精品电影| 日韩亚洲综合在线| 亚洲aa中文字幕| 黑人与娇小精品av专区| 欧美激情视频在线观看| 国产亚洲精品美女久久久| 97香蕉超级碰碰久久免费软件| 国产成+人+综合+亚洲欧洲| 亚洲福利在线视频| 欧美精品www在线观看| 久久国内精品一国内精品| 538国产精品一区二区免费视频| 久久躁日日躁aaaaxxxx| 日韩在线视频导航| 国产综合久久久久| 黄色成人在线免费| 亚洲成**性毛茸茸| 日本aⅴ大伊香蕉精品视频| 欧美黑人狂野猛交老妇| 日本成人精品在线| 91免费人成网站在线观看18| 日本午夜人人精品|