0

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

所以我有一个注册 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。

4

2 回答 2

0

尝试

<input type="submit" name="submit" value="Submit" onclick="this.disabled = true;" />
于 2012-06-03T21:45:10.617 回答
0

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

  • 如果出现第二次注册完全相同的电子邮件地址的请求,请忽略它。
  • 如果出现不同的电子邮件地址,请更新它。
  • 如果之前没有,那么添加它。
于 2012-06-03T23:20:02.443 回答