我一直在研究这个问题,这让我发疯了!
所以我有一个注册 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;" />
乱表单。 在服务器端使用以下简单检查:
- 如果发生第二次注册完全相同电子邮件地址的请求,请忽略它。
- 如果出现不同的电子邮件地址,请更新它。
- 如果以前没有,请添加它。