验证码和会话不相等

本文关键字:不相等 会话 验证 | 更新日期: 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;
    }
}

验证码和会话不相等

我将通过以下步骤"修复它":

将映像创建移动到自定义处理程序。创建映像后,将唯一值存储在会话或其他位置。

添加图像标记,将源设置为处理程序。

添加输入控件供用户输入响应

向服务器提交响应

服务器将响应与唯一值进行比较。

处理响应。