• 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. 接下来就是判断验证码和随机码是否一致。自己想想了
  • 相关阅读:
    ASCII码表
    arm linux 下移植busybox 的tftp
    Makefile中的路径
    Wireshark图解教程(简介、抓包、过滤器)【转载】
    在装有windows跟ubuntu的机器上重新安装windows后修复ubuntu的grub
    在linux里建立一个快捷方式,连接到另一个目录
    ubuntu 迁移部分 / 目录下的存储空间到 /home目录
    /etc/ntp.conf
    ntp 配置 autokey 功能【摘录】
    mips-openwrt-linux-gcc test_usbsw.c -o usbsw 编译问题
  • 原文地址:https://www.cnblogs.com/Dtscal/p/2182966.html
Copyright © 2020-2023  润新知