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

时间:2014-10-25 20:35:09

标签: javascript php jquery forms

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

我遇到的问题是用户出于任何原因发送垃圾邮件的时间。如果我双击或垃圾邮件按钮,则会产生错误(表单令牌错误无效),但仍会发生数据库交互并插入表单数据。我试图找到最好的js替代品来维护跨浏览器的兼容性。是js的出路吗?他们是php替代品吗?

1 个答案:

答案 0 :(得分:0)

在使用会话变量时,为什么不在数据库更新发生后立即设置变量。然后在每次数据库更新之前检查此值。如果为false,则更新DB。

function updateDB(){
    if($_SESSION['already_submitted'] == true) return false;

    // DB update code

    // on success
    $_SESSION['already_submitted'] = true

    // rest of code
}