Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 防止在没有JS的情况下重复提交表单_Javascript_Php_Jquery_Forms - Fatal编程技术网

Javascript 防止在没有JS的情况下重复提交表单

Javascript 防止在没有JS的情况下重复提交表单,javascript,php,jquery,forms,Javascript,Php,Jquery,Forms,我正在做一个项目,我正在使用mvc模式构建它。在成功提交表单时,我重定向用户并使用会话显示flash消息成功消息。我对用户使用“后退”按钮或刷新没有问题。但是,如果用户在提交表单时遇到错误,则不会重定向表单,以便在保留旧表单数据以填充字段的同时显示错误,从而用户不必重新输入信息 我遇到的问题是,用户何时会出于任何原因对按钮发送垃圾邮件。如果我双击或垃圾邮件按钮,则会产生一个错误无效表单令牌错误,但db交互仍会发生并插入表单数据。我试图找到最好的js替代品来保持跨浏览器兼容性。js是正确的选择吗?

我正在做一个项目,我正在使用mvc模式构建它。在成功提交表单时,我重定向用户并使用会话显示flash消息成功消息。我对用户使用“后退”按钮或刷新没有问题。但是,如果用户在提交表单时遇到错误,则不会重定向表单,以便在保留旧表单数据以填充字段的同时显示错误,从而用户不必重新输入信息


我遇到的问题是,用户何时会出于任何原因对按钮发送垃圾邮件。如果我双击或垃圾邮件按钮,则会产生一个错误无效表单令牌错误,但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用于此类任务。它更容易、更快地实现。