我正在开发一个项目,我正在使用mvc模式构建它。在成功提交表单时,我重定向用户并显示flash消息(使用会话成功消息)我对使用后退按钮或刷新的用户没有任何问题。但是,如果用户在提交表单时遇到错误,则表单不会被重定向,因此可以显示错误,同时保持旧表单数据填充该字段,以便用户不必重新输入信息。
我遇到的问题是用户出于任何原因发送垃圾邮件的时间。如果我双击或垃圾邮件按钮,则会产生错误(表单令牌错误无效),但仍会发生数据库交互并插入表单数据。我试图找到最好的js替代品来维护跨浏览器的兼容性。是js的出路吗?他们是php替代品吗?
答案 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
}