实现验证码生成的功能
主要功能
- 生成随机验证码字符串:通过 GenerateRandomCode(4) 方法生成一个长度为4的随机字符串,该字符串由大写字母和数字组成,用于作为验证码的文本内容。
- 将验证码字符串存储到Session:将生成的验证码字符串存储到 Session["captcha"] 中,以便后续在用户提交表单时可以取出该字符串进行验证,判断用户输入的验证码是否正确。
- 创建并绘制验证码图像
- 输出验证码图像到浏览器:将生成的验证码图像以PNG格式输出到浏览器,用户可以在页面上看到这个验证码图像。 释放资源:在图像生成和输出完成后,释放Graphics对象和Bitmap对象所占用的资源,避免内存泄漏。
应用场景
通常用于Web应用程序中的用户登录、注册、表单提交等场景,通过让用户输入验证码来防止恶意的自动化脚本提交表单,提高系统的安全性,防止垃圾信息的产生等。
示例图
代码
代码语言:javascript代码运行次数:0运行复制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);
}
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2025年01月15日,如有侵权请联系 cloudcommunity@tencent 删除验证码表单浏览器字符串存储