>  기사  >  백엔드 개발  >  asp.net 확인 코드 생성, 새로 고침 및 확인

asp.net 확인 코드 생성, 새로 고침 및 확인

高洛峰
高洛峰원래의
2017-01-13 13:57:451580검색

무차별 암호 해독 등을 방지하기 위해 인증 코드 기술이 설정되어 있습니다. 요즘에는 일반 웹사이트 등록 및 기타 웹사이트, 특히 Tencent의 긴 목록에서 인증 코드 기능을 제공합니다. 이 기사는 다른 사람의 코드를 참조합니다. 일단 가지고 있으면 더 이상 쓸 필요가 없습니다. 당신은 그것을 읽을 수 있습니다. 그러나 테스트 중에 두 가지 PageLoad 문제를 발견했습니다. 댓글이 딱 두 개네요. 네임스페이스도 수정되었습니다. 동시에 전체 확인 지침이 제공됩니다.
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 name="sender"></param> 
/// <param name="e"></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 name="index"></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 name="g"></param> 
private void Paint_Background(Graphics g) 
...{ 
g.Clear(BackColor); 
} 
/**//**//**//// <summary> 
/// 绘画边框 
/// </summary> 
/// <param name="g"></param> 
private void Paint_Border(Graphics g) 
...{ 
g.DrawRectangle(BorderColor, 0, 0, Width - 1, Height - 1); 
} 
/**//**//**//// <summary> 
/// 绘画文字 
/// </summary> 
/// <param name="g"></param> 
private void Paint_Text(Graphics g) 
...{ 
g.DrawString(_code, GetFont(), GetBrush(), 3, 1); 
} 
/**//**//**//// <summary> 
/// 绘画文字噪音点 
/// </summary> 
/// <param name="g"></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 페이지 참조:
c3cbf6e91f864453e6503a4d6f6ab1ca
일반적으로 새로 고침 기능도 동시에 제공되어야 합니다(명확하게 보이지 않으면 변경).
68639416da255779124511b7fbaed984 5263492d801d664816a8d1432c848272인증 코드 새로 고침63505a6f727f70c8bd4066f3066dcb9d ;
마스터 페이지를 사용하는 경우 다음 코드를 사용하세요.
de787e71d504a395e227267aa4bae24b Image ID="getcode" src="VerifyCode.aspx" runat="server" / >--%>
5263492d801d664816a8d1432c848272인증 코드 새로 고침63505a6f727f70c8bd4066f3066dcb9d
하이퍼링크에 해당하는 자바스크립트는 다음과 같습니다.
fc45ec7970456337e933cf6f1d0ec565
function getimgcode()
{
var getimagecode = document.getElementById("getcode");
getimagecode.src = "VerifyCode.aspx" ;
}
2cacc6d41bbb37262a98f745aa00fbf0
3 판단 확인
위 코드는 확인 코드를 저장합니다. 세션에서 코드로 표시됩니다. 코드 읽기 Session["code"].ToString();
사용 중에는 Session["code"].ToString()과 텍스트 상자에 입력된 문자열(TextBoxCode.Text)만 비교하면 됩니다. 판사도 마찬가지다.
if(Session["code"].ToString().Trim().Equals(TextBoxCode.Text.Trim()))
...{
Response.Write("성공");
}
테스트 통과!

asp.net 인증 코드 생성, 새로 고침 및 인증과 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.