zoukankan      html  css  js  c++  java
  • 关于简单验证码的实现

    当然,现在登录界面大部分都会有验证码机制。目的就在于防止注册机的恶意注册。下面来看看简单的验证码实现功能。

    1.当然是验证码绘制过程:

    Bitmap bit = new Bitmap(80,30);      
    
           Graphics g = Graphics.FromImage(bit);        
    
         g.FillRectangle(Brushes.White, 0, 0, bit.Width, bit.Height);   
    
              Random r = new Random();             //画线     
    
            for (int i = 0; i < 5; i++)           
    
      {             
    
        g.DrawLine(new Pen(Brushes.Gray), r.Next(0, bit.Width), r.Next(0, bit.Height), r.Next(0, bit.Width), r.Next(0, bit.Height));
    
                }             //画验证           
    string vali = "QWERTYUIOPASDFGHJKLZXCVBNM0123456789";
    for (int i = 0; i < 4; i++)
    {
    string a = vali.Substring(r.Next(0, vali.Length), 1);
    int argb = r.Next(int.MaxValue / 2, int.MaxValue); context.Session["vail"] = a; //保持数据
    g.DrawString(a, new Font("宋体", 14), new SolidBrush(Color.FromArgb(argb)), i * 20 + 3, r.Next(5, 15));
    }
    bit.Save(context.Response.OutputStream, ImageFormat.Jpeg);

    上面的代码段目的就在于实现验证码绘图机制,返回一个jpg格式的呆验证码的图片。
    2,绘制之后,当然是引用返回的jpg图片

    在登陆界面添加一个div标签

    <img id="ims" runat="server"  src="Handler/Vali.ashx"  alt="看不清!"  onclick="newimg()"/>来调用绘制图片,

    在使用简单js实现图片刷新功能。

            <script type="text/javascript">
                function newimg() {
                    document.getElementById("ims").src = document.getElementById("ims").src + "?";
                }
        </script>

    到这里就基本实现了验证,因为在绘制过程已经存储了session那么,在后台就可以实现验证码的验证过程,获取验证码 Session["vali"].ToString() == Session["vail"].ToString()验证机制。

    OK就到这里,方法比较粗陋,当然还有其他很多的实现方法。这里就不一一举出了。

  • 相关阅读:
    linux输入yum后提示: -bash: /usr/bin/yum: No such file or directory的解决方案
    MySQL.报错2059处理方法
    抽象工厂模式的优缺点和适用场景
    字节与字符的区别
    Kubernetes诞生及历史
    k8s-设计理念-原理图
    JSF中的状态模式
    关于spring框架JdbcTemplate中的命令模式
    浅谈springMVC中的设计模式(1)——责任链模式
    Spring中的观察者模式
  • 原文地址:https://www.cnblogs.com/drwu2009/p/3266351.html
Copyright © 2011-2022 走看看