您的位置:首页 > 运维架构 > 网站架构

网站上登录时生成随机的验证字符串!!

2004-10-12 21:42 405 查看
两个.aspx文件,一个用来生成图片,另一个用来验证的。
生成图片代码文件
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;

namespace CSharpALL
{
/// <summary>
/// WebForm4 的摘要描述。
/// </summary>
public class WebForm4 : System.Web.UI.Page
{
private void Page_Load(object sender, System.EventArgs e)
{
// 在這裡放置使用者程式碼以初始化網頁

//RndNum是一个自定义函数
string VNum=RndNum(6); //这里的数字6代表的是6位的随机字符串!
Session["VNum"]=VNum;
ValidateCode(VNum);
}

private void ValidateCode(string VNum)
{
int Gheight=(int)(VNum.Length * 11.5);
//gheightl圖片寬度,根据字符長度自動更改圖片寬度
System.Drawing.Bitmap Img = new System.Drawing.Bitmap(Gheight,20);
Graphics g = Graphics.FromImage(Img);
g.DrawString(VNum,new System.Drawing.Font("Arial",10),new System.Drawing.SolidBrush(Color.Red),3,3);
//在矩形控制字串(字串,字体,字休颜色,左上x.左上y)
System.IO.MemoryStream ms=new System.IO.MemoryStream();
Img.Save(ms,System.Drawing.Imaging.ImageFormat.Png);
Response.ClearContent(); //需要输出图象信息 要修改HTTP头
Response.ContentType="image/Png";
Response.BinaryWrite(ms.ToArray());
g.Dispose();
Img.Dispose();
Response.End();
}
public string RndNum(int VcodeNum)
{
string Vchar = "0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,S,T,U,W,X,Y" ;

string[] VcArray = Vchar.Split(',') ;
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(35) ;
int t=rand.Next(35);
if (temp != -1 && temp == t)
{
return RndNum( VcodeNum );
}
temp = t ;
VNum += VcArray[t];

}
return VNum ;

}

#region Web Form 設計工具產生的程式碼
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 此為 ASP.NET Web Form 設計工具所需的呼叫。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 此為設計工具支援所必須的方法 - 請勿使用程式碼編輯器修改
/// 這個方法的內容。
/// </summary>
private void InitializeComponent()
{
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion
}
}
验证密码文件
<asp: image id=image1 ruant=server imageurl="你的生成图片的文件名" ></asp:image>
private void Button1_Click(object sender, System.EventArgs e)
{
string VNum;
VNum=Session["VNum"].ToString();
if(this.txtVc.Text!=VNum)
{
Response.Write("<script>alert(/"驗證碼不正確/");</script>");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: