繁体   English   中英

使用会话验证asp.net验证码

[英]asp.net captcha validation using session

我已经在asp.net中实现了CAPTCHA,并且在验证之前效果很好,但是当我进行验证时,该程序会忽略任何输入文本并表现为“不正确”,您能告诉我它有什么问题吗?我可以吗? 这是代码:

public partial class WebForm1 : System.Web.UI.Page
{
    //string strResult;
    protected string Captcha()
    {
        string alphabt = "QWERTYUIOPASDFGHJKLZXCVBNM0123456789";
        Random rand = new Random();

        int num1 = rand.Next(1, 36);
        int num2 = rand.Next(1, 36);
        int num3 = rand.Next(1, 36);
        int num4 = rand.Next(1, 36);
        int num5 = rand.Next(1, 36);
        int num6 = rand.Next(1, 36);

        string subStr1 = alphabt.Substring(num1, 1);
        string subStr2 = alphabt.Substring(num2, 1);
        string subStr3 = alphabt.Substring(num3, 1);
        string subStr4 = alphabt.Substring(num4, 1);
        string subStr5 = alphabt.Substring(num5, 1);
        string subStr6 = alphabt.Substring(num6, 1);

        string result = subStr1 + subStr2 + subStr3 + subStr4 + subStr5 + subStr6;
        Session["res"] = result;

        Bitmap bmpImage = new Bitmap(Server.MapPath("~/Image/bg1.jpg"));
        Graphics objGraphic = Graphics.FromImage(bmpImage);
        objGraphic.DrawString(result, new Font("arial", 12, FontStyle.Strikeout), SystemBrushes.WindowText, new PointF());
        string time = DateTime.Now.Ticks.ToString();//due to browser image cashing      
                                                    //bmpImage.Save(Server.MapPath("~/Image/securityImage.jpg"));
                                                    //return "~/Image/securityImage.jpg";
        bmpImage.Save(Server.MapPath("~/Image/securityImage" + time + ".jpg"));

        return "~/Image/securityImage" + time + ".jpg";
    }

    protected bool CaptchaValidate()
    {
        if (Session["res"].ToString() == TextBox1.Text)
            return true;
        return false;
    }

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
            Image1.ImageUrl = Captcha();
    }

    protected void btn1_Click(object sender, EventArgs e) //using ajax to refresh the picture
    {
        Image1.ImageUrl = Captcha();
    }

    protected void Button2_Click(object sender, EventArgs e)
    {
        if (CaptchaValidate() == false)
            Label1.Text = "Incorrect ";
        else
            Label1.Text = "correct";
    }
}

提前致谢...

我刚重启机器,就这样! 顺便说一句,上面的代码是正确的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM