C# ASP.NET 验证码
时间: 2023-10-31 15:53:59 浏览: 56
在 C# ASP.NET 中生成验证码可以通过以下步骤实现:
1. 在 ASPX 页面中添加一个 Image 控件,用于显示验证码图片:
```html
<asp:Image ID="imgCaptcha" runat="server" />
```
2. 在 ASPX 页面中添加一个 Button 控件,用于刷新验证码:
```html
<asp:Button ID="btnRefresh" runat="server" Text="刷新" OnClick="btnRefresh_Click" />
```
3. 在 ASPX 页面中添加一个 TextBox 控件,用于用户输入验证码:
```html
<asp:TextBox ID="txtCaptcha" runat="server"></asp:TextBox>
```
4. 在后台代码中生成验证码图片和验证码字符串:
```csharp
protected void GenerateCaptcha()
{
// 生成随机验证码字符串
string captcha = GenerateRandomCode();
// 将验证码字符串存储到 Session 中,用于验证用户输入
Session["Captcha"] = captcha;
// 生成验证码图片
Bitmap image = new Bitmap(200, 50);
Graphics graphics = Graphics.FromImage(image);
Font font = new Font("Arial", 20, FontStyle.Bold);
Rectangle rect = new Rectangle(0, 0, image.Width, image.Height);
Brush brush = new SolidBrush(Color.FromArgb(255, 0, 0, 0));
graphics.FillRectangle(brush, rect);
brush = new SolidBrush(Color.FromArgb(255, 255, 255, 255));
graphics.DrawString(captcha, font, brush, 10, 10);
MemoryStream stream = new MemoryStream();
image.Save(stream, ImageFormat.Png);
// 将验证码图片显示在 Image 控件中
imgCaptcha.ImageUrl = "data:image/png;base64," + Convert.ToBase64String(stream.ToArray());
}
```
5. 在后台代码中处理刷新按钮的点击事件,重新生成验证码:
```csharp
protected void btnRefresh_Click(object sender, EventArgs e)
{
GenerateCaptcha();
}
```
6. 在后台代码中处理用户提交表单的事件,比较用户输入的验证码和 Session 中存储的验证码是否一致:
```csharp
protected void btnSubmit_Click(object sender, EventArgs e)
{
string captcha = Session["Captcha"] as string;
if (txtCaptcha.Text == captcha)
{
// 验证码正确,继续处理表单提交
}
else
{
// 验证码错误,提示用户重新输入
}
}
```
注意:为了增加验证码的安全性,应该在生成随机验证码字符串时使用随机数生成器,并且在生成验证码图片时使用随机字体和随机颜色,以防止恶意程序破解验证码。