程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 用C#(asp.net)寫出登錄驗證碼

用C#(asp.net)寫出登錄驗證碼

編輯:關於C#

public class ValidateCode : System.Web.UI.Page
{

  private void Page_Load( object sender, System.EventArgs e )
  {

    this.CreateCheckCodeImage( GenerateCheckCode( ) );
  }
  #region Web 窗體設計器生成的代碼 override
  protected void OnInit( EventArgs e )
  {
    //
    // CODEGEN: 該調用是 asp.NET Web 窗體設計器所必需的.
    //

    InitializeComponent( );
    base.OnInit( e );
  }

  /// <summary>
  /// 設計器支持所需的方法 - 不要使用代碼編輯器修改
  /// 此方法的內容.
  /// </summary>
  private void
  InitializeComponent( )
  {

    this.Load += new System.EventHandler( this.Page_Load );
  }
  #endregion
  private
  string GenerateCheckCode( )
  {

    int number;

    char code;

    string checkCode = String.Empty;
    System.Random random = new Random( );
    for( int i=0;i<5;i++ )
    {
      number = random.Next( );
      if( number % 2 == 0 )
      code = ( char )( '0' + ( char )( number % 10 ) );
      else
      code = ( char )( 'A' + ( char )( number % 26 ) );
      checkCode += code.ToString( );
    }
    Response.Cookies.Add( new HttpCookie( "CheckCode", checkCode ) );
    return checkCode;
  }

  private void CreateCheckCodeImage( string checkCode )
  {
    if( checkCode == null || checkCode.Trim( ) == String.Empty )
    return;
    System.Drawing.Bitmap image = new System.Drawing.Bitmap( ( int )Math.Ceiling( ( checkCode.Length * 12.5 ) ), 22 );
    Graphics g = Graphics.FromImage( image );
    try
    {
      //生成隨機生成器
      Random random = new Random( );
      //清空圖片背景色
      g.Clear( Color.White );
      //畫圖片的背景噪音線
      for( int i=0;i<25;i++ )

      {

        int x1 = random.Next( image.Width );

        int x2 = random.Next( image.Width );

        int y1 = random.Next( image.Height );

        int y2 = random.Next( image.Height );
        g.DrawLine( new Pen( Color.Silver ), x1, y1, x2, y2 );
      }
      Font font = new System.Drawing.Font( "Arial", 12, ( System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic ) );
      System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush( new Rectangle( 0, 0, image.Width, image.Height ), Color.Blue, Color.DarkRed, 1.2f, true );
      g.DrawString( checkCode, font, brush, 2, 2 );
      //畫圖片的前景噪音點
      for( int i=0;i<100;i++ )
      {

        int x = random.Next( image.Width );

        int y = random.Next( image.Height );
        image.SetPixel( x, y, Color.FromArgb( random.Next( ) ) );
      }
      //畫圖片的邊框線
      g.DrawRectangle( new Pen( Color.Silver ), 0, 0, image.Width - 1, image.Height - 1 );
      System.IO.MemoryStream ms = new System.IO.MemoryStream( );
      image.Save( ms, System.Drawing.Imaging.ImageFormat.Gif );
      Response.ClearContent( );
      Response.ContentType = "image/Gif";
      Response.BinaryWrite( ms.ToArray( ) );
    }
    finally

    {
      g.Dispose( );
      image.Dispose( );
    }
  }
}

假如以上驗證碼生成器頁面名為:CheckCode.aspx,那麼在登錄頁面中使用“<IMG>” 這個 HTML 元素來顯示生成的驗證碼圖片:<IMG src="CheckCode.aspx">

在登錄頁面的登錄按鈕的處理事件中使用以下代碼判斷驗證碼:private void btnLogin_Click( object sender, System.Web.UI.ImageClickEventArgs e )
{
  if( Request.Cookies["CheckCode"] == null )

  {
    lblMessage.Text = "您的浏覽器設置已被禁用 Cookies,您必須設置浏覽器允許使用 Cookies 選項後才能使用本系統.";
    lblMessage.Visible = true;
    return;
  }

  if( String.Compare( Request.Cookies["CheckCode"].Value, txtCheckCode.Text, true ) != 0 )

  {
    lblMessage.Text = "驗證碼錯誤,請輸入正確的驗證碼.";
    lblMessage.Visible = true;
    return;
  }
  /******其他代碼******/

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved