Javascript 防止在没有JS的情况下重复提交表单
我正在做一个项目,我正在使用mvc模式构建它。在成功提交表单时,我重定向用户并使用会话显示flash消息成功消息。我对用户使用“后退”按钮或刷新没有问题。但是,如果用户在提交表单时遇到错误,则不会重定向表单,以便在保留旧表单数据以填充字段的同时显示错误,从而用户不必重新输入信息Javascript 防止在没有JS的情况下重复提交表单,javascript,php,jquery,forms,Javascript,Php,Jquery,Forms,我正在做一个项目,我正在使用mvc模式构建它。在成功提交表单时,我重定向用户并使用会话显示flash消息成功消息。我对用户使用“后退”按钮或刷新没有问题。但是,如果用户在提交表单时遇到错误,则不会重定向表单,以便在保留旧表单数据以填充字段的同时显示错误,从而用户不必重新输入信息 我遇到的问题是,用户何时会出于任何原因对按钮发送垃圾邮件。如果我双击或垃圾邮件按钮,则会产生一个错误无效表单令牌错误,但db交互仍会发生并插入表单数据。我试图找到最好的js替代品来保持跨浏览器兼容性。js是正确的选择吗?
我遇到的问题是,用户何时会出于任何原因对按钮发送垃圾邮件。如果我双击或垃圾邮件按钮,则会产生一个错误无效表单令牌错误,但db交互仍会发生并插入表单数据。我试图找到最好的js替代品来保持跨浏览器兼容性。js是正确的选择吗?它们是php的替代方案吗?当您使用会话变量时,为什么不在数据库更新之后设置一个变量呢。然后在每次数据库更新之前检查该值。如果为false,则更新数据库
function updateDB(){
if($_SESSION['already_submitted'] == true) return false;
// DB update code
// on success
$_SESSION['already_submitted'] = true
// rest of code
}
在数据库中插入了什么样的数据?为什么不在插入之前检查唯一字段(如电子邮件)以查看该记录是否存在?如果记录存在,则向视图返回一个值,该值会向用户显示一个错误。正如Graham所说,在插入之前,您可以始终检查数据库中是否已经存在完全相同的记录。但我肯定会推荐JS用于此类任务。它更容易、更快地实现。