通过单击按钮或表单提交禁用注册按钮,这两种方式都会阻止表单提交


Disabling the register button with on button click or on form submit , both ways stop the form from being submitted

我一直在研究这个问题,这让我发疯了!

所以我有一个注册 POST 表单,提交时,它会重定向到同一页面,尽管我有以下内容:

    if (isset($_POST['submit']))
{
  //include validation and executing code... (another page)
}

现在代码运行良好,一切都很好,但我有一个问题。

当用户连续单击两次时,他会收到一条消息,表明具有相同电子邮件的用户已经注册(第一次单击已注册他并将信息插入数据库)

现在我尝试在按钮标签中禁用带有:Onclick="this.RegisterBtn.disabled=1;"按钮的按钮我还尝试在表单标签中使用:onSubmit="this.RegisterBtn.disabled=1;"

两者都阻止表格提交,不知道为什么。我也试过这个:

onClick="this.RegisterBtn.disabled=1; this.form1.submit();"

现在我想出了一个假设,当按钮被禁用时,"isset"函数将返回 false,如果这里有任何有经验的人可以确认或帮助我解决这个问题,我将不胜感激,我只是 php 和所有这些:)的新手,

提前非常感谢

编辑:表单操作为空(重定向到同一页面),代码包括位于表单上方。

编辑:当我禁用按钮时,isset($_POST['submit'])总是返回false。

解决方案:好的,我确实解决了它,以防有人遇到同样的问题,这是我如何解决的:

首先,当你禁用按钮时,isset($_POST['按钮名称'])将始终返回false。 所以我做了以下工作:

而不是这个条件,我使用了:if (!empty($_POST)) .....包含代码

我使用了onsubmit(在表单标签中).this.button1.disabled=1;,现在一切正常:-),并且表单无法:D提交两次。

试试

<input type="submit" name="submit" value="Submit" onclick="this.disabled = true;" />
忘记弄

乱表单。 在服务器端使用以下简单检查:

  • 如果发生第二次注册完全相同电子邮件地址的请求,请忽略它。
  • 如果出现不同的电子邮件地址,请更新它。
  • 如果以前没有,请添加它。