asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字)

以下是"asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字)"的完整攻略:

一、数字验证码示例

数字验证码常用于防止恶意注册或恶意登录操作。可以通过以下代码实现数字验证码的生成:

public ActionResult VerifyCode()
{
    int codeLength = 4;//验证码长度
    string code = "";
    for (int i = 0; i < codeLength; i++)//生成随机数
    {
        code += new Random(Guid.NewGuid().GetHashCode()).Next(0, 9).ToString();
    }
    Session["Code"] = code;//将验证码保存到Session中,方便后续的验证
    MemoryStream ms = new MemoryStream();
    Bitmap img = new Bitmap(80, 30);
    Graphics g = Graphics.FromImage(img);
    g.Clear(Color.White);
    g.DrawString(code, new Font("宋体", 14), new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), new RectangleF(0, 0, 80, 30));//将随机数画入图片中
    img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
    Response.BinaryWrite(ms.ToArray());//输出验证码图片
    return null;
}

二、数字字母混合验证码示例

数字字母混合验证码常用于加强安全性。可以通过以下代码实现数字字母混合验证码的生成:

public ActionResult VerifyCodeMixed()
{
    int codeLength = 4;//验证码长度
    string code = "";
    for (int i = 0; i < codeLength; i++)//生成随机数
    {
        int rand = new Random(Guid.NewGuid().GetHashCode()).Next(0, 36);//生成一个随机数,在0到35之间,分别对应数字和大小写字母
        if (rand < 10)
        {
            code += rand.ToString();//如果生成的随机数在0到9之间,就直接保存
        }
        else if (rand < 36)
        {
            code += Convert.ToChar(rand - 10 + 'a').ToString();//如果生成的随机数在10到25之间,将其转换成小写字母并保存
        }
    }
    Session["CodeMixed"] = code;//将验证码保存到Session中,方便后续的验证
    MemoryStream ms = new MemoryStream();
    Bitmap img = new Bitmap(80, 30);
    Graphics g = Graphics.FromImage(img);
    g.Clear(Color.White);
    for (int i = 0; i < codeLength; i++)//将随机数画入图片中
    {
        g.DrawString(code[i].ToString(), new Font("宋体", 14), new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255))), new RectangleF(i * 20, 0, 20, 30));
    }
    img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
    Response.BinaryWrite(ms.ToArray());//输出验证码图片
    return null;
}

三、汉字验证码示例

汉字验证码常用于防止机器人注册或非法提交内容。可以通过以下代码实现汉字验证码的生成:

public ActionResult VerifyCodeChinese()
{
    string[] array = new string[] { "九曲桥边野草花", "疏影横斜水清浅", "暗自低声烟欲断", "多情自古伤离别", "更那堪冷落清秋节" };//验证码文字数组
    string code = array[new Random(Guid.NewGuid().GetHashCode()).Next(0, array.Length)];
    Session["CodeChinese"] = code;//将验证码保存到Session中,方便后续的验证
    MemoryStream ms = new MemoryStream();
    Bitmap img = new Bitmap(150, 60);
    Graphics g = Graphics.FromImage(img);
    Font font = new Font("微软雅黑", 16, FontStyle.Bold);
    Brush brush = new SolidBrush(Color.FromArgb(r.Next(0, 255), r.Next(0, 255), r.Next(0, 255)));
    g.Clear(Color.White);
    g.DrawString(code, font, brush, new PointF(0, 10));
    img.Save(ms, ImageFormat.Jpeg);//将图片保存到内存流中
    Response.BinaryWrite(ms.ToArray());//输出验证码图片
    return null;
}

以上三个方法分别生成了数字、数字字母混合、汉字验证码。可以根据实际需要进行选择使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:asp.net中3种验证码示例(实现代码)(数字,数字字母混和,汉字) - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • C#操作SQLite数据库帮助类详解

    C#操作SQLite数据库帮助类详解 什么是SQLite数据库? SQLite是一种轻量级的关系型数据库管理系统,因其跨平台、易操作、高效等特点广受欢迎,可用于很多不同的应用场景。 C#如何操作SQLite数据库? C#作为一种高效的编程语言,内置了SQLite.NET库,可以直接通过System.Data.SQLite命名空间中的类进行对SQLite数据库…

    C# 2023年5月31日
    00
  • C#如何给枚举类型增加一个描述特性详解

    C#可以通过给枚举类型增加描述特性(Description Attribute),为每个枚举成员添加对应的文字说明,方便代码的阅读和维护。 实现的步骤如下: 1. 定义枚举类型 首先需要定义一个枚举类型,以示例说明为例: public enum Gender { [Description("未知")] Unknown = 0, [Desc…

    C# 2023年6月1日
    00
  • ASP.NET简单获取服务端和客户端计算机名称的方法

    ASP.NET 是一个功能强大的 Web 开发框架,使用它能够快速方便地开发有着强大功能、安全性较高的 Web 应用程序。它提供了许多方便的方法来获取服务端和客户端的计算机名称。下面将详细地讲解ASP.NET简单获取服务端和客户端计算机名称的方法的完整攻略。 获取服务端计算机名称 使用 Dns.GetHostName() 方法获取服务端计算机名称 strin…

    C# 2023年6月3日
    00
  • jQuery使用$.ajax进行即时验证实例详解

    让我来详细讲解“jQuery使用$.ajax进行即时验证实例详解”。 标题 首先,我们需要了解一下什么是jQuery以及$.ajax。jQuery是一个快速且简洁的JavaScript库,它简化了HTML文档遍历、事件处理、动画等操作。而$.ajax是jQuery中一个重要的函数,用来进行异步请求,可以实现无需刷新页面即可获取/修改数据。 具体步骤 在实现即…

    C# 2023年6月8日
    00
  • C#实现WPS文件转PDF格式的方法示例

    下面是“C#实现WPS文件转PDF格式的方法示例”的完整攻略。 1. 引言 在现代的办公生活中,文件格式转换是必备的功能之一。实现文件转换的方式也有很多种,其中,利用C#编程实现WPS文件转PDF格式是一种常见的方式。 2. 程序分析 首先,我们需要通过C#代码打开wps文件,然后将其转换为PDF文件。实现此功能需要使用各种C#库和API,其中最常用的就是M…

    C# 2023年6月8日
    00
  • 在WPF中使用多线程更新UI

    在WPF中使用多线程更新UI是一个非常常见的需求,但是由于WPF是单线程UI框架,因此在使用多线程更新UI需要遵循一定的规则,否则可能会导致异常或者UI卡死的情况。本文将为你详细讲解在WPF中使用多线程更新UI的完整攻略。 为什么要使用多线程更新UI 在WPF应用程序中,UI鲜明地表现了一种单线程的设计模型,也就是说,所有的UI元素都只能由一个UI线程进行访…

    C# 2023年6月1日
    00
  • c#定期删除文件的实操方法

    C#定期删除文件的实操方法 在C#编程中,经常需要对指定目录下的文件进行定期删除,常见的应用场景包括删除系统日志文件、清空临时文件等等。下面就为大家详细讲解C#定期删除文件的实操方法,包含以下几个方面的内容: 获取文件目录 遍历目录中的文件 判断文件是否需要删除 删除文件 1. 获取文件目录 在C#中,我们可以通过使用Directory类来获取指定目录下的所…

    C# 2023年6月1日
    00
  • C#中把FastReport.Net报表控件的数据保存到数据库

    C#中把FastReport.Net报表控件的数据保存到数据库的完整攻略如下: 1.准备工作 在开始保存FastReport报表控件的数据之前,需要先做一些准备工作,包括: 安装FastReport.Net报表控件; 在你的项目中引用FastReport.Net的dll文件; 在你的项目中引用数据库连接的相关dll文件; 创建一个数据库表,用来存储报表数据;…

    C# 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部