關於映像驗證碼的實現

來源:互聯網
上載者:User
驗證碼

第一.兩個頁面Login.aspx和gif.aspx。

第二.Login.aspx頁面的image控制項的URL指定為gif.aspx。

第三.gif.aspx頁面代碼如下:

private void Page_Load(object sender, System.EventArgs e)
  {
   string strNum = RandNum(4); 
   Session["Test"] = strNum;
   ValidateCode(strNum);   
   ViewState["Test"] = strNum; 
  }

/// <summary>
  /// 產生隨機數
  /// </summary>
  /// <param name="iNum">種子</param>
  /// <returns></returns>
  /// <author>tianzm</author>
  /// <history>2005-06-18</history>

private string RandNum(int iNum)
  {
   string strChar = "0,1,2,3,4,5,6,7,8,9,0,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z";
   string[] strAry = strChar.Split(',');
   string strNum = "";   
   System.Random obj = new Random();
   for ( int i=0; i<iNum; i++)
   {   
    int index = obj.Next(strAry.Length);
    strNum = strNum + strAry[index];    
   }
   return strNum;

//這裡可以對產生的隨機數,進行加密處理。
  }

/// <summary>
  /// 重畫映像產生
  /// </summary>
  /// <param name="strNum">驗證碼</param>
  /// <author>tianzm</author>
  /// <history>2005-06-18</history>

  private void ValidateCode(string strNum)
  {
   System.Drawing.Bitmap img = null;
   System.Drawing.Graphics g = null;
   System.IO.MemoryStream ms = null;
   int iWidth = Convert.ToInt16(strNum.Length * 11.5);
   img = new Bitmap(iWidth,20);
   g = Graphics.FromImage(img);
   g.DrawString(strNum,(new Font("Arial",10)),(new SolidBrush(Color.Blue)),3,3);
   ms = new MemoryStream();
   img.Save(ms,ImageFormat.Png);
   Response.ClearContent();
   Response.ContentType = "image/Png";
   Response.BinaryWrite(ms.ToArray());
   g.Dispose();
   img.Dispose();
   Response.End();
  }  

在Login.aspx頁面驗證如下:

string strTemp = Session["Test"].ToString();
   Session.Abandon();
   ViewState["TestNum"] = strTemp;
   if ( this.TextBox1.Text == ViewState["TestNum"].ToString() )
   {
    this.Label1.Text = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
   }



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。