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

来源:互联网 发布:java快捷键大全 编辑:程序博客网 时间:2024/05/23 15:34

两个.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>");
    } 
}

原创粉丝点击