验证码在页面中的使用

                      记得前几天刚学习了怎么样写一个验证码,但是只是创建了一个验证码并没有把它使用在登录或者注册页面中,嘿嘿,所以一直都在想着这个问题,想尽快的解决下,而就是今天下午意外一些事情没有课,就把这个重新的总结一下,似乎好多友友说验证码百度上面搜索好多可以拿来使用的,但是我现在是一个学习的状态,应该以一种学习的态度好好总结一下它,下面就总结一下我理解上的验证码的使用。

            验证码的创建以及使用

public class ValicateCode : IHttpHandler, IRequiresSessionState{
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "Image/jpeg";
        string Codefont = Code();           //调用创建的Code方法
        context.Session["txtcode"] = Codefont;     //创建一个session,它是以一个键值对的形式存在,在这里取名字为txtcode,值为Codefont
        using (Bitmap img = new Bitmap(120, 30))        //首先创建一个背景
        {
            using (Graphics g = Graphics.FromImage(img))     //使用工具类Graphics创建一个对象
            {
                g.FillRectangle(Brushes.White, 0, 0, img.Width, img.Height); //填充一个矩形,颜色为白色,位置为0,0,宽和高都为创建的图片的宽和高
                g.DrawRectangle(Pens.Red, 0, 0, img.Width - 2, img.Height - 2);
                g.DrawString(Codefont, new Font("宋体", 20), Brushes.Red, 0, 0);
                img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
        }
    }
        public string Code()
        {
            string num = string.Empty; 
            Random r = new Random();             //使用随机数,随机生成一组数据
            string[] array = { "1", "2", "3", "", "", "", "", "", "" };
            for (int i = 0; i < 4; i++)     //在这里记得使用的是i<验证码显示项的长度-1,由于使用的是索引
            {
                num += array[r.Next(array.Length)];   //执行的是数组的长度,然后连接,在这里是字符串类型的可以使用++
            }
            return num;                             //返回随意生成的几个项连接然后返回
        }
}

          上面是使用一个随机数和我们之前学习的画图工具画出来的一个验证码,具体的其他的验证码是怎么样制作的我目前还是不太清楚的,但是这样制作的还是可以实现其验证的作用的,还有就是使用时间需要引用一个命名空间using System.Web.SessionState,实现一个接口IRequiresSessionState,这个是很有必要的事情,一定要记得的啦。

          下面就来写一下在一个登录页面上面想要使用验证码实现的功能:

  <% if(errormess==3) { %>
            <tr id="tcode" runat="server">
                <td>
                    <input type="text" id="txtcode" name="txtcode" value="请输入验证码" runat="server"/>
                </td>
                <td>
                    <img src="ValicateCode.ashx" alt="验证码" />
                </td>
                 
            </tr>
           <%  } %> 
$(function () {
      $("#txtcode").focus(function () {
                if ($(this).val() == "请输入验证码") {
                    $(this).val('');
                    $()
                }
            }).blur(function () {
                if ($(this).val() == '') {
                    $(this).val('请输入验证码');
                }
            })
        })
 $(function () {
            if ($("txtname").attr("name") == 3) {
                $(this).show();
            }
        })
   protected int errormess = 0;   
   errormess = Convert.ToInt32(ViewState["error"]);    //在这里使用ViewState获取ViewState的值
              if (errormess < 3)
                    {
                        errormess++;
                        ViewState["error"] = errormess;
                    }

                      我们输入错误三次即出现验证码,想一下刚开始时间应该是掩藏的吧,嘿嘿,当你登陆三次依旧是登录失败那么就会出现提示您输入验证码,当然输入的验证码需要在前台页面直接判断是否正确即可,如果不争取直接提示错误,否则在提交服务器判断用户名或者密码的问题。

             好啦,嘿嘿,本来还要和三级连动一起总结的,发现已经总结不完啦,就写总结到这里吧,加油加油,我会继续努力的。

posted @ 2015-01-31 00:13  雪?  阅读(1667)  评论(5编辑  收藏  举报