如何检查网页是否只提交了3次

本文关键字:是否 提交 3次 网页 何检查 检查 | 更新日期: 2023-09-27 17:58:05

我有一个web表单,我必须确保点击"提交"按钮的次数不超过3次。我在表单中有一些逻辑,限制用户在3次尝试失败后输入任何内容。

这是我的逻辑,但我知道这是不对的:

protected void btnSubmit_Click(object sender, EventArgs e)
{
    int count = 0;
    count++;
    if (count <= 3) 
    {
        Function1();
    }
    else
        MessageBox("You submitted your information more than 3 times.");
}

这不会起作用,因为每次刷新页面时计数都将为零。

如何检查网页是否只提交了3次

将变量保存在页面的ViewState中。在第一次加载页面时初始化其值:

void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.ViewState["Count"] = 0;
    }
}

Button.Click事件上,增加计数变量的值:

protected void btnSubmit_Click(object sender, EventArgs e)        
{            
    Int32 count = Int32.Parse(this.ViewState["Count"].ToString()) + 1;
    this.ViewState["Count"] = count;
    if (count > 3)
    {
        // Do something ..
    }
}

您可以将计数存储在会话变量中。

int submitCount = 0;
if (Session["submitCount"] != null)
{
    submitCount = int.Parse (Session["submitCount"]);
}
// Code based on submitCount
Session["submitCount"] = ++submitCount; // Save # of submits to session

这将起作用(未测试):

protected void btnSubmit_Click(object sender, EventArgs e)
    {
        if(Session["Clicked"] != null) 
        {
            int clicked = Convert.ToInt32(Session["Clicked"]) + 1;
            if(clicked == 3) 
            {
                MessageBox("You submitted your information more than 3 times.");
                return;
            }
            else
            {
                Session["Clicked"] = clicked;
            }
        } 
        else
        {
            Session["Clicked"] = 1;
        }
        Function1();
    }

Cookie将更加持久。

数据不会在web请求中持久存在,因此您需要将计数存储在某种形式的持久存储中。您有几个选项:cookie、会话变量、视图状态、数据库等。

数据库可能是最安全的,因为它位于服务器上,用户不能篡改它,但它也需要更多的设置工作。会话变量和视图状态的问题是,虽然它们在web请求中持续存在,但它们不是永久性的,因此用户可以在会话超时后提交第四个请求。Cookie也有同样的问题。

重要的一点是,数据不会在请求中保留,因此您必须研究向网站添加持久存储的方法,并选择最符合您需求的解决方案。

您也可以将值存储在隐藏字段中。

<asp:HiddenField ID="hfSubmitCount" runat="server" Value="0" />
protected void btnSubmit_Click(object sender, EventArgs e)
{
    int count;
    if(!int.TryParse(hfSubmitCount.Value, out count))
        count = 0;
    count++;
    hfSubmitCount.Value = count.ToString();
    if (count <= 3)
        Function1();        
    else
        MessageBox("You submitted your information more than 3 times.");
}

不知道任何asp.net,但你应该使用session来计算。后面的逻辑应该是:

if (session variable do not exist)
 store session variable
else
 (increment session variable)

希望它能帮助