今天学习了常规字母加数字的网页验证码流程.
- 在需要验证码的地方插入img标签<img alt="验证码" src="validata.aspx"/>
- 创建validata.aspx页面。
- 切换到代码文件,验证码是什么样子的呢?在一张图片上显示随机码。只要掌握如何产生随机码和图片就好说。
- 在Page_Load()方法获得一个随机数,当然在网上看到一个比较偷懒的做法,利用.net平台提供的函数产生,system.Guid.NewGuid()方法就能获得一个随机的不重复的随机码,当然还得确定随机码的长度,所以还得调用substring()方法。最后还得把随机码保存到session中,代码:Session("Rcode")=System.Guid.NewGuid().ToString().Substring(0,4);取一个长度为4的随机码保存在session中。
- 把随机码保存在图像中。
- 导入对应命名空间。
Using system.drawing;
Using system.drawing.imaging;
- 创建图像对象
Bitmap bitmap=new Bitmap(60,25);//创建一个宽60,高25的图像
- 创建画布对象
Graphics g=Graphics.FromImage(bitmap);
- 清除画布并指定画布背景
g.Clear(ColorTranslator.FromHtml("#ffffff"));// ColorTranslator把html颜色值转换成颜色。
- 创建字体对象
Font font=new Font("微软雅黑",12);//12号字体
- 创建画刷对象
SolidBrush solidBrush=new SolidBrush(Color.black);
- 把随机码画在画布上
G.DrawString(Session["Rcode"].toString(),font,soldBrush,2,2);//详见msdn
- 把图像以jpeg格式保存在流中
Bitmap.Save(Response.OutputStream,ImageFormat.Jpeg);
- 设置响应的mini类型
Response.ContentType="image/Jpeg";
- 关闭流
g.dispose();
bitmap.dispose();
Response.End();
- 接下来就是判断验证码和随机码是否一致。自己想想了