• 图片验证码


         图片验证码,就是首先造一张空白的图,然后在图片上绘制随机数就可以了,在这里用到了一般处理程序。

      一般处理程序就是单纯的页面(无任何标签),是.ashx文件,里面的验证数字利用Session保存,用Response显示在页面上,如果想用的话 直接图片按钮(Image Button)路径到这个页面就可以,, 而里面的验证数字则可以利用Session["name"]来接收。                         ↓

                                        ↓

                                        ↓

                  img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);

    1、下面用代码来介绍一下一般处理程序:

    Show.ashx 页面
    <%@ WebHandler Language="C#" Class="Show" %>
    
    using System;
    using System.Web;
    using System.Drawing;//引用绘图命名空间
    using System.Web.SessionState;//IRequiresSessionState的命名空间
    //一般处理器
    public class Show : IHttpHandler, IRequiresSessionState  Session的接口,必须得继承,不然没法用session
    {
        public void ProcessRequest (HttpContext context) {
            context.Response.ContentType = "image/jpeg";  //输出类型 为图片类型
            
            //开始造图片,
            Bitmap img = new Bitmap(50,20);  //一张宽度为50,高度为20的空白图片
            Graphics gc = Graphics.FromImage(img);  //往img图里绘制
            Font font = new Font("楷体",12,FontStyle.Bold);//字体格式
            SolidBrush brush = new SolidBrush(Color.White);//刷子格式 ,里面的颜色是背景颜色    
            gc.FillRectangle(brush,0,0,50,20);//绘制的样子
            brush.Color = Color.Red;//刷子颜色
        
            
            //已经绘制完了,往图里扔验证码,开始造验证码
            string s = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
            string str = "";
            Random r = new Random(); //随机出一个数来
           
            for (int i = 0; i < 4; i++)
            {
                int x = r.Next(0, 62);
                string  ss = s.Substring(x, 1); //截取字符串
                str +=  ss;
            }
            
            //验证码已经造好了,开始往图片里扔,前提先保存一下验证码的内容,为了以后的使用(输入验证)
            context.Session["yanzheng"] = str;
            
            //往图片里仍
            gc.DrawString(str,font,brush,0,0);
    
         
            //  最后将图片保存,通过response响应流保存
            img.Save(context.Response.OutputStream,System.Drawing.Imaging.ImageFormat.Jpeg);
            
        }
     
        public bool IsReusable {
            get {
                return false;
            }
        }
    
    }

    一般处理程序造好以后,需要来用它,这里是用的图片按钮(ImageBotton)来接收,右键ImageButton ,找到ImageUrl属性,直接选择路径就可以了,在这里的路径是Show.ashx

    既然图片已经显示在页面上了,就需要进行验证。。。  用Session来接收

      protected void Button1_Click(object sender, EventArgs e)  //注册验证
        {
            string txtyanzheng = TextBox4.Text;
            if (string.IsNullOrWhiteSpace(txtyanzheng))
            {
    
            }
            else
            {
                string yanzheng = Session["yanzheng"].ToString();  //用Session传值接收过来
    
                if (txtyanzheng == yanzheng)
                {
                    Response.Write("<script>alert('注册成功')</script>");
                }
                else
                {
                    Response.Write("<script>alert('验证码不正确')</script>");
                }
            }
        }

     这样就能实现图片验证码的验证了,下面附效果图:

       

     2、传值:两种方式 SessionResponse.Redirect

    3、至于最后的点击图片换一下验证码,就是点击一下路径变一下,最后有个id(自己随便起)放不同的数就可以了

    ImageButton1.ImageUrl = "show.ashx?id=" + new Random().Next(100).ToString();

         点击一下图片按钮,路径变一下,就相当于刷新验证码了

  • 相关阅读:
    Web 自动化测试(Selenium) PO 模型
    Web 自动化测试(Selenium) 鼠标和键盘操作以及浏览器等待
    Web 自动化测试(Selenium)进阶及八大元素定位
    web 自动化测试(Selenium) Xpath 和 Css 定位元素
    没有最全,只有更全的正则表达式集合(持续更新...)
    SQL优化第一篇
    C# 设置桌面为父窗口
    Spring Boot整合MybatisPlus逆向工程(MySQL/PostgreSQL)
    IDEA2020.2版本设置类和方法的自定义注释模板
    记一个Java多线程相关的面试题
  • 原文地址:https://www.cnblogs.com/lk-kk/p/4661153.html
Copyright © 2020-2023  润新知