zoukankan      html  css  js  c++  java
  • ASP.NET实现验证码

    首先外观显示页面代码:

     1protected System.Web.UI.WebControls.Image ValidateImage;
     2
     3        private void Page_Load(object sender, System.EventArgs e)
     4        {
     5            if(!IsPostBack)
     6            {
     7                //验证码的生成和获取,用于登录页面的有效验证。
     8                string ValidCode = DB.CheckCode.MakeValidateCode();
     9                ValidateImage.ImageUrl = "xbm.aspx?code="+ ValidCode;
    10                ViewState["ValidCode"= ValidCode;
    11                ViewState["CheckCode"]=DB.CheckCode.DecodeValidateCode(ViewState["ValidCode"].ToString());
    12                ary_chk=new ArrayList();
    13                ary_chk.Add(ViewState["CheckCode"]);
    14                ary_chk.Add(System.DateTime.Now);
    15                //判断输入的验证码是否正确
    16                BtnSub.Attributes["onclick"]="return Check(\""+ViewState["CheckCode"].ToString()+"\");";
    17            }

    18        }

    以下为处理验证码类:
    //获取随机生成的验证码类
    public class CheckCode
        
    {
            
    public static string DecodeValidateCode(string code)
            
    {
                
    char [] s = code.ToCharArray();
                
    return String.Format("{0}{1}{2}{3}", s[0],s[9],s[3],s[7]);
            }

            
            
    //随机生成验证码序列
            public static string MakeValidateCode()
            
    {
                
    char[] s = new char[]'2','3','4','5','6','7','8','9','a'
                                         ,
    'b','c','d','e','f','g','h','i','j','k','m','n','p','q'
                                         ,
    'r','s','t','u','v','w','x','y','z'}
    ;

                
    string num = "";
                Random r 
    = new Random();
                
    for(int i = 0; i < 10; i++)
                
    {
                    num 
    += s[r.Next(0, s.Length)].ToString(); 
                }

                
    return num;
            }

        }
    把接收的验证码转为图片xbm.aspx?code=生成的验证玛:
            private void Page_Load(object sender, System.EventArgs e)
            
    {
                
    if (!IsPostBack)
                
    {
                    
    if (Request["code"!= null)
                    
    {
                        
    string Validcode = Request["code"];
                        
    //进行验证码长度的判断
                        if (Validcode.Length <10)
                        
    {
                            Validcode 
    = "3360";
                        }

                        
    else
                        
    {
                            
    //获取验证码
                            Validcode = DB.CheckCode.DecodeValidateCode(Validcode);
                        }

                        ValidateCode code 
    =new ValidateCode();
                        
    //画出验证码
                        code.DrawValidateCode(this, Validcode);
                    }

    }


    //实现一个验证码的类

            
    public class ValidateCode
            
    {
                
    private Bitmap validateimage;
                
    private Graphics g;
                
    public ValidateCode()
                
    {
                    validateimage 
    = new Bitmap(4017, PixelFormat.Format24bppRgb);
                    g 
    = Graphics.FromImage(validateimage);
                }

                
    //设置验证码的相关属性
                public void DrawValidateCode(Page e, string i)
                
    {
                    g.FillRectangle(
    new SolidBrush(Color.FromArgb(0xee,0xee,0xee)), 004017);
                    g.DrawString(i, 
    new Font("宋体",12),new SolidBrush(Color.Black),new PointF(1,0));
                    g.Save();
                    MemoryStream ms
    =new MemoryStream();
                    validateimage.Save(ms,System.Drawing.Imaging.ImageFormat.Gif);
                    e.Response.ClearContent();
                    e.Response.ContentType
    ="image/gif";
                    e.Response.BinaryWrite(ms.ToArray());
                    e.Response.End();
                }

            }



    以上大家可以自己做自己的整和,也可以随自己的意愿进行修改。
  • 相关阅读:
    【转】 linux iio子系统
    【转】eclipse -- the project was not built due to a resource exists with a different case...
    Android常用的一些make命令(转载)--不错
    【转】Android Recovery模式
    chain rule 到 Markov chain
    chain rule 到 Markov chain
    贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
    贝叶斯统计(Bayesian statistics) vs 频率统计(Frequentist statistics):marginal likelihood(边缘似然)
    企业文化与发展战略
    企业文化与发展战略
  • 原文地址:https://www.cnblogs.com/hanguoji/p/282521.html
Copyright © 2011-2022 走看看