验证码制作

项目前期完成了,开始着手做后台,压力小了点,有更多的时间研究新东西了

验证码并不是新东西,一直没弄明白是怎么回事,前些天用GDI忽然有了思路,就用上了

登陆页的后台代码,用Sleep放刷新延迟

   private   void  Page_Load( object  sender, System.EventArgs e)
  {
   
if ( ! this .IsPostBack)
   {
    System.Threading.Thread.Sleep(
1000 );
    
char [] source  =  ( " ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 " ).ToCharArray();
    
string  code  =   "" ;
    Random rnd 
=   new  Random();
    
for  ( int  i = 0  ; i  <   4  ; i ++ )
     code 
+=  source[rnd.Next(source.Length - 1 )];
    Session[
" code " ] = code;
   }
  }

登陆验证
         private   void  BtnLogin_Click( object  sender, System.EventArgs e)
        {
            
if  (TxtCode.Text.ToLower()  !=  Session[ " code " ].ToString().ToLower())
            {
                Response.Write(
" <script>alert(\ " 验证码错误\ " )</script> " );
                Response.Write(
" <script>window.navigate(\ " index.aspx\ " )</script> " );
                return;
            }
            
if  (TxtUserName.Text  ==   " username "   &&  TxtPassword.Text  ==   " password " )
            {
                Session[
" UserName " =  TxtUserName.Text;
                Response.Redirect(
" 下一页面 " );
            }
            Response.Write(
" <script>alert(\ " 密码错误\ " )</script> " );
            Response.Write(
" <script>window.navigate(\ " index.aspx\ " )</script> " );
        }


前台还是用一个Img服务器对象 url为code.aspx
Code.aspx.cs如下

         private   void  Page_Load( object  sender, System.EventArgs e)
        {
            
if (Session[ " code " ].ToString() != "" )
            {
                Bitmap bm 
=   new  Bitmap( 60 , 30 );
                Graphics g 
=  Graphics.FromImage(bm);
                g.DrawString(Session[
" code " ].ToString(), new  System.Drawing.Font( " 宋体 " , 20 ), new  SolidBrush(Color.WhiteSmoke), 0 , 0 );
                bm.Save(Response.OutputStream,System.Drawing.Imaging.ImageFormat.Gif);
            }
        }


OK,完成了

你可能感兴趣的:(验证码)