如何检查网页是否只提交了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.");
}
这不会起作用,因为每次刷新页面时计数都将为零。
将变量保存在页面的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)
希望它能帮助