注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

小葫芦君(汉斯的博客)

博客迁移到新博客:https://blog.ssxingshou.com

 
 
 

日志

 
 
关于我

小小葫芦商城,为您提供高品质的商品,一流的产品,一流的包装服务,一流的物流服务,放心购买

网易考拉推荐

今天做个后台登陆,用到了验证码,把他贴出来  

2006-11-04 10:26:33|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
首先外观页面代码如下:

  protected System.Web.UI.WebControls.Image ValidateImage;

      private void Page_Load(object sender, System.EventArgs e)
      {
          if(!IsPostBack)
          {
              //验证码的生成和获取,用于登录页面的有效验证。
              string ValidCode = DB.CheckCode.MakeValidateCode();
            ValidateImage.ImageUrl = "xbm.aspx?code="+ ValidCode;
              ViewState["ValidCode"] = ValidCode;
              ViewState["CheckCode"]=DB.CheckCode.DecodeValidateCode(ViewState["ValidCode"].ToString());
              ary_chk=new ArrayList();
                ary_chk.Add(ViewState["CheckCode"]);
              ary_chk.Add(System.DateTime.Now);
                //判断输入的验证码是否正确
                BtnSub.Attributes["onclick"]="return Check(\""+ViewState["CheckCode"].ToString()+"\");";
            }
        }

处理验证类: 

//获取随机生成的验证码类
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(40, 17, PixelFormat.Format24bppRgb);
                g = Graphics.FromImage(validateimage);
            }
            //设置验证码的相关属性
            public void DrawValidateCode(Page e, string i)
            {
                g.FillRectangle(new SolidBrush(Color.FromArgb(0xee,0xee,0xee)), 0, 0, 40, 17);
                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();
            }
        }

  评论这张
 
阅读(467)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017