当然,现在登录界面大部分都会有验证码机制。目的就在于防止注册机的恶意注册。下面来看看简单的验证码实现功能。
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就到这里,方法比较粗陋,当然还有其他很多的实现方法。这里就不一一举出了。