C#网页验证码

今天学习了常规字母加数字的网页验证码流程.

  1. 在需要验证码的地方插入img标签<img alt="验证码" src="validata.aspx"/>
  2. 创建validata.aspx页面。
  3. 切换到代码文件,验证码是什么样子的呢?在一张图片上显示随机码。只要掌握如何产生随机码和图片就好说。
  4. 在Page_Load()方法获得一个随机数,当然在网上看到一个比较偷懒的做法,利用.net平台提供的函数产生,system.Guid.NewGuid()方法就能获得一个随机的不重复的随机码,当然还得确定随机码的长度,所以还得调用substring()方法。最后还得把随机码保存到session中,代码:Session("Rcode")=System.Guid.NewGuid().ToString().Substring(0,4);取一个长度为4的随机码保存在session中。
  5. 把随机码保存在图像中。

    1. 导入对应命名空间。

    Using system.drawing;

    Using system.drawing.imaging;

    1. 创建图像对象

      Bitmap bitmap=new Bitmap(60,25);//创建一个宽60,高25的图像

    2. 创建画布对象

      Graphics g=Graphics.FromImage(bitmap);

    3. 清除画布并指定画布背景

      g.Clear(ColorTranslator.FromHtml("#ffffff"));// ColorTranslator把html颜色值转换成颜色。

    4. 创建字体对象

    Font font=new Font("微软雅黑",12);//12号字体

    1. 创建画刷对象

      SolidBrush solidBrush=new SolidBrush(Color.black);

    2. 把随机码画在画布上

      G.DrawString(Session["Rcode"].toString(),font,soldBrush,2,2);//详见msdn

    3. 把图像以jpeg格式保存在流中

      Bitmap.Save(Response.OutputStream,ImageFormat.Jpeg);

    4. 设置响应的mini类型

      Response.ContentType="image/Jpeg";

    5. 关闭流

      g.dispose();

      bitmap.dispose();

      Response.End();

  6. 接下来就是判断验证码和随机码是否一致。自己想想了