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#中ExecuteNonQuery()返回值注意点分析

    针对C#中ExecuteNonQuery()返回值注意点,我为大家准备了以下完整攻略: 1. ExecuteNonQuery()方法的用途 ExecuteNonQuery()方法在C#中是通过SqlConnection对象执行SQL语句的方法之一,它主要用于执行不返回数据集的SQL语句,比如INSERT、UPDATE、DELETE等操作,即执行非查询语句。在…

    C# 2023年5月14日
    00
  • C#实现将浮点数表示的货币数量以汉字大写形式输出的方法

    实现将浮点数表示的货币数量以汉字大写形式输出,需要以下步骤: 步骤一:将浮点数转为字符串并分离整数部分和小数部分 我们可以使用C#的ToString方法将对应的浮点数转为字符串,并且使用Split方法将整数部分和小数部分分离开。 double money = 123456.78; string moneyStr = money.ToString("…

    C# 2023年6月7日
    00
  • C++中const的实现细节介绍(C,C#同理)

    下面是关于C++中const的实现细节介绍的完整攻略。 const的含义和作用 C++中的const常量表示一个不可改变的变量,即该变量的值不允许被修改。const常量通常用于定义程序中不会改变的数据,例如PI的值。const的作用相当于定义了一个只读的变量。 const的定义和初始化 const常量可以在定义时被初始化,也可以在后面进行初始化。 定义时初始…

    C# 2023年5月14日
    00
  • C# 抓取网页内容的方法

    我来为你详细讲解使用C#抓取网页内容的具体攻略。 一、准备工作 在开始之前,我们需要先引用 System.Net 名称空间,该名称空间为我们提供了一系列的网络操作类。 以下是代码示例: using System.Net; 二、HTTP请求 接下来我们需要构造一个 HTTP 请求,通过该请求来获取网页内容。通常我们抓取网页内容所用的 Http 请求类型是 Ge…

    C# 2023年5月31日
    00
  • ASP.Net前台调用后台变量的方法

    要在 ASP.Net 前台页面中调用后台的变量,可以通过以下方法实现: 在后台代码中定义变量并使用public或protected关键字进行修饰。例如: //定义变量 protected string MyVariable; //给变量赋值 MyVariable = "Hello, World!"; 在前台页面中使用“<%=” 闭合…

    C# 2023年6月7日
    00
  • 一篇文章带你轻松了解C# Lock关键字

    一篇文章带你轻松了解C# Lock关键字 Lock关键字是什么 Lock是C#编程中非常重要的一个关键字,主要用来进行多线程编程时的同步控制。在多线程程序中,不同的线程会同时对同一数据进行访问,如果没有同步控制,则有可能发生数据竞争的问题。使用Lock关键字可以保证在同一时间只有一个线程对共享资源进行访问。 Lock关键字的用法 Lock关键字用法非常简单,…

    C# 2023年5月15日
    00
  • C# Directory.GetDirectories(string path):获取指定目录下的所有子目录路径

    Directory.GetDirectories(string path)方法是C#中用于获取指定路径下所有子目录的静态方法。 具体使用方法如下: 1.导入命名空间 在使用该方法之前,需要先导入System.IO命名空间,以便使用其中提供的Directory类。 using System.IO; 2.方法原型 public static string[] G…

    C# 2023年4月19日
    00
  • C#类中属性与成员变量的使用小结

    请听我仔细讲解! C#类中属性与成员变量的使用小结 在开发C#应用程序的过程中,使用类是很常见的。类是描述对象行为和特征的模板,而属性和成员变量是类中最常用的元素之一。下面,我们将详细介绍C#类中属性与成员变量的使用。 成员变量 成员变量也称为字段,是类中用于存储数据的变量。成员变量可以在类的任何方法之外进行定义,这样就可以在整个类中使用。定义成员变量时,可…

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