浪荡De逍遥哥

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

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

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就到这里,方法比较粗陋,当然还有其他很多的实现方法。这里就不一一举出了。

posted on 2013-08-18 20:06  浪荡De逍遥哥  阅读(214)  评论(0编辑  收藏  举报