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

时间:2012-06-03 21:36:05

标签: php javascript forms double-click submission

我一直在研究这个问题,它让我疯狂!。

所以我有一个注册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 ['buttonname'])将始终返回false。所以我做了以下事情:

而不是我使用的这个条件:if(!empty($ _ POST)).....包括代码

我使用了onsubmit(在表单标签中).. this.button1.disabled = 1; ,现在一切都很完美:-),表格不能提交两次:D。

2 个答案:

答案 0 :(得分:0)

尝试

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

答案 1 :(得分:0)

忘记搞乱表格。在服务器端使用这些简单的检查:

  • 如果发出第二个注册完全相同的电子邮件地址的请求,请忽略它。
  • 如果出现其他电子邮件地址,请进行更新。
  • 如果之前没有,请添加。