广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用GDI+实现生成验证码
  • 693
分享到

C#使用GDI+实现生成验证码

2024-04-02 19:04:59 693人浏览 八月长安
摘要

一、概述 一般处理程序 ashx :它没有服务器控件,用response输出什么就是什么。 生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到Session里去,然后验证用

一、概述

一般处理程序 ashx :它没有服务器控件,用response输出什么就是什么。

生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到Session里去,然后验证用户输入的内容是否与Session中的验证码相符即可。

效果图:用户可以点击切换验证码信息。

二、一般处理程序

    public class CheckCodeHandler : IHttpHandler, IRequiresSessionState//使用到Session,需要实现此接口IRequiresSessionState
    {
        private int intLength = 5;        //长度
        private string strIdentify = "Identify"; //随机字串存储键值,以便存储到Session中


        /// <summary>
        /// 生成验证图片核心代码
        /// </summary>
        /// <param name="context"></param>
        public void ProcessRequest(HttpContext context)
        {
            //背景用白色填充
            Bitmap map = new Bitmap(200, 60);
            Graphics g = Graphics.FromImage(map);
            g.FillRectangle(new SolidBrush(Color.White), 0, 0, 200, 60);

            //将随机生成的字符串绘制到图片上
            string letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
            Random r = new Random();
            StringBuilder s = new StringBuilder();
            Font font = new Font(FontFamily.GenericSerif, 48, FontStyle.Bold, GraphicsUnit.Pixel);

            for (int i = 0; i < intLength; i++)
            {
                s.Append(letters.Substring(r.Next(0, letters.Length - 1), 1));
                g.DrawString(s[s.Length - 1].ToString(), font, new SolidBrush(Color.Blue), i * 38, r.Next(0, 15));
            }
            font.Dispose();
            context.Session[strIdentify] = s.ToString(); //先保存在Session中,验证与用户输入是否一致

            //生成干扰线条,混淆背景
            Pen pen = new Pen(new SolidBrush(Color.Blue), 2);
            for (int i = 0; i < 10; i++)
            {
                g.DrawLine(pen, new Point(r.Next(0, 199), r.Next(0, 59)), new Point(r.Next(0, 199), r.Next(0, 59)));
            }
            pen.Dispose();

            //设置输出流图片格式
            context.Response.ContentType = "image/gif";
            map.Save(context.Response.OutputStream, ImageFORMat.Gif);
            map.Dispose();

            context.Response.End();
        }
        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }

三、在页面调用

<img src="CheckCodeHandler.ashx" alt="验证码" style="width: 60px; height: 24px" />
if (this.TextBox1.Text.ToUpper().Trim() != Session["strIdentify"].ToString().ToUpper().Trim())
{
    Response.Write("<script>alert('验证码不正确')</script>");
}
else
{
    Response.Write("<script>alert('登录成功')</script>");
}

到此这篇关于C#使用GDI+实现生成验证码的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用GDI+实现生成验证码

本文链接: https://www.lsjlt.com/news/148869.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#使用GDI+实现生成验证码
    一、概述 一般处理程序 ashx :它没有服务器控件,用response输出什么就是什么。 生成验证码原理:产生随机字符,并将字符生成为图片,同时储存到Session里去,然后验证用...
    99+
    2022-11-13
  • 利用java实现验证码生成并完成验证
    利用java实现验证码生成并完成验证?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。java 制作验证码并进行验证实例详解在注册、登录的页面上经常会出现验证码,为...
    99+
    2023-05-31
    java 验证码 ava
  • SpringBoot实现Thymeleaf验证码生成
    使用后台返回验证码图片,验证码存到session中后端实现校验,前端只展示验证码图片。 本篇用SpringBoot Thymeleaf实现验证码生成。 创建springboot项...
    99+
    2022-11-12
  • SpringBoot使用Kaptcha实现验证码的生成与验证功能
    当我们在项目中登录使用验证码的时候,不妨试试Kaptcha生成验证码,非常简单 1、首先,我们在pom.xml文件中引入kaptcha的maven依赖 <!-- kaptcha...
    99+
    2023-03-13
    SpringBoot实现Kaptcha验证码 SpringBoot Kaptcha验证码 SpringBoot验证码
  • Vue实现图片验证码生成
    图片验证码主要用于注册,登录等提交场景中,目的是防止脚本进行批量注册、登录、灌水,相比不带图片验证的安全度有所提高,不过目前也有自动识别图片验证码的程序出现,基本都是付费识别,随之又...
    99+
    2022-11-13
  • Java实现动态验证码生成
    本文实例为大家分享了Java动态验证码生成的具体代码,供大家参考,具体内容如下 说明:今天给大家来带来一个自动生成验证码的处理方法。验证码的出现有效减少了注入灌水以及破解密码等恶意操...
    99+
    2022-11-13
  • JS实现随机生成验证码
    本文实例为大家分享了JS实现随机生成验证码的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head>...
    99+
    2022-11-12
  • python实现验证码生成显示
    from captcha.image import ImageCaptcha import numpy as np import matplotlib.pyplot as plt from PIL import Image imp...
    99+
    2023-01-31
    验证码 python
  • Android实现随机生成验证码
    本文实例为大家分享了Android验证码的随机生成代码,供大家参考,具体内容如下 Code.java package com.example.myapp; import and...
    99+
    2022-11-12
  • Java如何实现验证码生成
    这篇文章主要介绍了Java如何实现验证码生成,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。验证码大家都知道,它的作用也不用我多说了吧。如果不太清楚请参见百度百科中的解释,一般...
    99+
    2023-05-30
    java
  • SpringMvc使用GoogleKaptcha生成验证码
    前言:google captcha 是google生成验证码的一个工具类,其原理是将随机生成字符串保存到session中,同时以图片的形式返回给页面,之后前台页面提交到后台进行对比。1、jar包准备官方提供的pom应该是<depend...
    99+
    2023-05-31
    springmvc googlekaptcha 验证码
  • SpringBoot使用Captcha生成验证码
    目录1. 基本结构 2. Kaptcha的依赖 3. 配置SpringBoot 4. 配置Captcha 5. 工具类 6. 接口以及实现类 7. Controller8. 前端页面...
    99+
    2022-11-12
  • SpringBoot如何使用Kaptcha实现验证码的生成与验证功能
    本篇内容主要讲解“SpringBoot如何使用Kaptcha实现验证码的生成与验证功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot如何使用Kaptcha实现验证码的生成与验...
    99+
    2023-07-05
  • springboot验证码生成及验证功能怎么实现
    这篇“springboot验证码生成及验证功能怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“springboot验证...
    99+
    2023-07-06
  • JavaScript实现随机生成验证码及校验
    本文实例为大家分享了JavaScript实现随机生成验证码及校验的具体代码,供大家参考,具体内容如下 输入验证码(区分大小写)点击确认,进行校验。出错就弹框提示 点击 看不清 重新随...
    99+
    2022-11-12
  • java随机验证码生成实现实例代码
    java随机验证码生成实现实例代码摘要: 在项目中有很多情况下都需要使用到随机验证码,这里提供一个java的随机验证码生成方案,可以指定难度,生成的验证码可以很方便的和其他组件搭配之前要使用一个生成随机验证码的功能,在网上找了一下,有很多的...
    99+
    2023-05-31
    java 随机 验证码
  • java实现随机验证码图片生成
    本文实例为大家分享了java生成随机验证码图片的具体代码,供大家参考,具体内容如下 1.controller @GetMapping(value = "/getRan...
    99+
    2022-11-12
  • Vue如何实现图片验证码生成
    这篇文章主要介绍“Vue如何实现图片验证码生成”,在日常操作中,相信很多人在Vue如何实现图片验证码生成问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Vue如何实现图片验证码生成”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-29
  • php如何实现自动生成验证码
    本文操作环境:windows10系统、php 7、thinkpad t480电脑。现在验证码在表单中的应用越来越多了,但是如果用js来实现总觉得不太方便,因此使用php来实现下,在此记录下。当然,我们也可以封装成一个函数,以后使用的时候也是...
    99+
    2019-06-04
    php 验证码
  • 基于ASP.NET实现验证码生成详解
    作业:验证码 要求: (1)验证码应该是图片格式,不能是文字格式,即无法用鼠标选中。 (2)验证码上应该有噪点和干扰线条。 (3)验证码应该回避相似字符,如“0&rdqu...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作