【问题标题】:Captcha and session are not equal验证码和会话不相等
【发布时间】:2016-02-05 07:25:40
【问题描述】:

我想先写验证码我写了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;
    }
}

【问题讨论】:

  • 听起来像PostBack 问题.. 我还建议存储初始化的 Session["gResim"]; Global.asax file and then assigning it properly as well as getting rid of the Session.Clear() method probably not necessary what happens when you step through the code.. also translate your comments into English`中的值`

标签: c# asp.net captcha


【解决方案1】:

我会通过以下步骤“修复它”:

将图像创建移至自定义处理程序。创建图像时,将唯一值存储在会话或其他位置。

添加图片标签,将源设置为处理程序。

为用户添加输入控件以输入响应

向服务器提交响应

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

处理响应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多