验证码和会话不相等
本文关键字:不相等 会话 验证 | 更新日期: 2023-09-27 18:33:21
我正在尝试先写验证码,我写了asp,然后我可以将其作为图像。问题是图像和会话不相等 会话在图像之前给出一个。我找不到问题的原因。如何解决此问题?
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Imaging;
public partial class botdetect_captcha : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//create image
Bitmap bmp = new Bitmap(100, 30);
//create object to draw
Graphics g = Graphics.FromImage(bmp);
//image background
g.Clear(Color.LightBlue);
//randomly string
string metin = RastgeleKelime();
//send to session for validation
Session["gResim"] = metin;
//create font for image
Font font = new Font("Comic Sans MS", 14);
g.DrawString(metin, font, Brushes.DarkBlue, 4, 1);
//draw randomly three lines
Random rnd = new Random();
g.DrawLine(Pens.DarkSlateGray, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30));
g.DrawLine(Pens.DarkRed, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30));
g.DrawLine(Pens.DarkOrange, rnd.Next(0, 100), rnd.Next(0, 30), rnd.Next(0, 100), rnd.Next(0, 30));
//make response
bmp.Save(Response.OutputStream, ImageFormat.Jpeg);
}
public string RastgeleKelime()
{
string kelime = "";
Random rnd = new Random();
for (int i = 0; i < 6; i++)
{
kelime += ((char)rnd.Next('A', 'Z')).ToString();
}
return kelime;
}
}
我将通过以下步骤"修复它":
将映像创建移动到自定义处理程序。创建映像后,将唯一值存储在会话或其他位置。
添加图像标记,将源设置为处理程序。
添加输入控件供用户输入响应
向服务器提交响应
服务器将响应与唯一值进行比较。
处理响应。