侧边栏壁纸
博主昵称
YunZheng

独处未必孤独,喜欢就是自由

实现验证码生成的功能

2025年01月15日 344阅读 0评论 2点赞

主要功能

  • 生成随机验证码字符串:通过 GenerateRandomCode(4) 方法生成一个长度为4的随机字符串,该字符串由大写字母和数字组成,用于作为验证码的文本内容。
  • 将验证码字符串存储到Session:将生成的验证码字符串存储到 Session["captcha"] 中,以便后续在用户提交表单时可以取出该字符串进行验证,判断用户输入的验证码是否正确。
  • 创建并绘制验证码图像
  • 输出验证码图像到浏览器:将生成的验证码图像以PNG格式输出到浏览器,用户可以在页面上看到这个验证码图像。
    释放资源:在图像生成和输出完成后,释放Graphics对象和Bitmap对象所占用的资源,避免内存泄漏。

应用场景

通常用于Web应用程序中的用户登录、注册、表单提交等场景,通过让用户输入验证码来防止恶意的自动化脚本提交表单,提高系统的安全性,防止垃圾信息的产生等。

示例图

Test

代码

public partial class captcha : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        // 生成随机字符串
        string captchaText = GenerateRandomCode(4);
        Session["captcha"] = captchaText;  // 存储在 Session 以便验证

        // 创建图像
        Bitmap bitmap = new Bitmap(100, 40);
        Graphics g = Graphics.FromImage(bitmap);
        g.Clear(Color.White);

        // 设置字体
        Font font = new Font("Arial", 20, FontStyle.Bold);
        Brush brush = new SolidBrush(Color.Black);
        Random rand = new Random();

        // 添加干扰线
        for (int i = 0; i < 6; i++)
        {
            Pen pen = new Pen(Color.Gray);
            int x1 = rand.Next(100);
            int y1 = rand.Next(40);
            int x2 = rand.Next(100);
            int y2 = rand.Next(40);
            g.DrawLine(pen, x1, y1, x2, y2);
        }

        // 绘制验证码
        g.DrawString(captchaText, font, brush, 10, 5);
        g.Flush();

        // 输出图像到浏览器
        Response.ContentType = "image/png";
        bitmap.Save(Response.OutputStream, ImageFormat.Png);

        // 释放资源
        g.Dispose();
        bitmap.Dispose();
    }

    private string GenerateRandomCode(int length)
    {
        const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        char[] buffer = new char[length];
        for (int i = 0; i < length; i++)
        {
            buffer[i] = chars[random.Next(chars.Length)];
        }
        return new string(buffer);
    }
}
2

—— 评论区 ——

昵称
邮箱
网址
取消
腾讯云自媒体同步曝光计划
腾讯云自媒体同步曝光计划
满足条件的自媒体,入驻腾讯云开发者社区,可分享总价值百万资源包
立即了解
人生倒计时
舔狗日记