asp.net generiert einen Bestätigungscode (reine Zahlen)

高洛峰
Freigeben: 2017-01-13 14:54:29
Original
1080 Leute haben es durchsucht

CheckCode.cs

using System; 
using System.Data; 
using System.Configuration; 
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; 
/// <summary> 
/// CheckCode 的摘要说明 
/// </summary> 
public class CheckCode 
{ 
public CheckCode() 
{ 
// 
// TODO: 在此处添加构造函数逻辑 
// 
} 
public static void DrawImage() 
{ 
CheckCode img = new CheckCode(); 
HttpContext.Current.Session["CheckCode"] = img.RndNum(4); 
img.checkCodes(HttpContext.Current.Session["CheckCode"].ToString()); 
} 
/// <summary> 
/// 生成验证图片 
/// </summary> 
/// <param name="checkCode">验证字符</param> 
private void checkCodes(string checkCode) 
{ 
int iwidth = (int)(checkCode.Length * 13); 
System.Drawing.Bitmap image = new System.Drawing.Bitmap(iwidth, 23); 
Graphics g = Graphics.FromImage(image); 
g.Clear(Color.White); 
//定义颜色 
Color[] c = { Color.Black, Color.Red, Color.DarkBlue, Color.Green, Color.Orange, Color.Brown, Color.DarkCyan, Color.Purple }; 
//定义字体 
string[] font = { "Verdana", "Microsoft Sans Serif", "Comic Sans MS", "Arial", "宋体" }; 
Random rand = new Random(); 
//随机输出噪点 
for (int i = 0; i < 50; i++) 
{ 
int x = rand.Next(image.Width); 
int y = rand.Next(image.Height); 
g.DrawRectangle(new Pen(Color.LightGray, 0), x, y, 1, 1); 
} 
//输出不同字体和颜色的验证码字符 
for (int i = 0; i < checkCode.Length; i++) 
{ 
int cindex = rand.Next(7); 
int findex = rand.Next(5); 
Font f = new System.Drawing.Font(font[findex], 10, System.Drawing.FontStyle.Bold); 
Brush b = new System.Drawing.SolidBrush(c[cindex]); 
int ii = 4; 
if ((i + 1) % 2 == 0) 
{ 
ii = 2; 
} 
g.DrawString(checkCode.Substring(i, 1), f, b, 3 + (i * 12), ii); 
} 
//画一个边框 
g.DrawRectangle(new Pen(Color.Black, 0), 0, 0, image.Width - 1, image.Height - 1); 
//输出到浏览器 
System.IO.MemoryStream ms = new System.IO.MemoryStream(); 
image.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); 
HttpContext.Current.Response.ClearContent(); 
//Response.ClearContent(); 
HttpContext.Current.Response.ContentType = "image/Jpeg"; 
HttpContext.Current.Response.BinaryWrite(ms.ToArray()); 
g.Dispose(); 
image.Dispose(); 
} 
/// <summary> 
/// 生成随机的字母 
/// </summary> 
/// <param name="VcodeNum">生成字母的个数</param> 
/// <returns>string</returns> 
private string RndNum(int VcodeNum) 
{ 
string Vchar = "0,1,2,3,4,5,6,7,8,9"; 
string[] VcArray = Vchar.Split(&#39;,&#39;); 
string VNum = ""; //由于字符串很短,就不用StringBuilder了 
int temp = -1; //记录上次随机数值,尽量避免生产几个一样的随机数 
//采用一个简单的算法以保证生成随机数的不同 
Random rand = new Random(); 
for (int i = 1; i < VcodeNum + 1; i++) 
{ 
if (temp != -1) 
{ 
rand = new Random(i * temp * unchecked((int)DateTime.Now.Ticks)); 
} 
int t = rand.Next(VcArray.Length); 
if (temp != -1 && temp == t) 
{ 
return RndNum(VcodeNum); 
} 
temp = t; 
VNum += VcArray[t]; 
} 
return VNum; 
} 
}
Nach dem Login kopieren

Erstellen Sie eine Seite checkCode.aspx, die auf die Klasse verweist. Sie müssen nichts in das Frontend schreiben. Sie können einfach auf die DrawImage()-Methode der Klasse verweisen Wir haben im Hintergrund erstellt.

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; 
public partial class checkCode : System.Web.UI.Page 
{ 
protected void Page_Load(object sender, EventArgs e) 
{ 
CheckCode.DrawImage(); 
} 
}
Nach dem Login kopieren

Nachfolgend können wir die Seite checkCode.aspx auf der Seite zitieren, die einen Bestätigungscode erfordert.
Rezeption

<asp:TextBox ID="Validator" runat="server" Width="150px" ></asp:TextBox> 
<img id="Img1" alt="看不清,请点击我!" onclick="this.src=this.src+&#39;?&#39;" src="checkCode.aspx" 
style="width: 73px; height: 22px" align="left" /> 
<asp:ImageButton ID="imgBtnLogin" runat="server" ImageUrl="~/Images/Login.GIF" 
OnClick="imgBtnLogin_Click" />
Nach dem Login kopieren

Backend-Urteil

protected void imgBtnLogin_Click(object sender, ImageClickEventArgs e) 
{ 
if(this.Validator.Text==Session["CheckCode"].ToString()) 
{ 
//。。。。 
} 
else 
{ 
Response.Write("<script>alert(&#39;验证码输入错误,请重新输入!&#39;);Location=&#39;MumberValidate.aspx&#39;</script>"); 
return; 
} 
}
Nach dem Login kopieren

Bitte ändern Sie den obigen Code entsprechend der tatsächlichen Situation.

Weitere Artikel zum Generieren von Bestätigungscodes (reine Zahlen) durch asp.net finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage