我有一个旧的框架 1.1 项目,有以下问题:如果用户提交一个页面,那么在数据库中可能会出现重复的记录。这个错误经常重复但并不一致:在大多数情况下没有重复的条目,但在某些情况下最多可以有 4 个。首次提交后,我们使用 JavaScript 禁用提交按钮。
可能这会有所帮助:有一个会话对象用于存储用户输入(已提交)。
您能想到为什么会发生重复记录的任何场景?
非常感谢
我有一个旧的框架 1.1 项目,有以下问题:如果用户提交一个页面,那么在数据库中可能会出现重复的记录。这个错误经常重复但并不一致:在大多数情况下没有重复的条目,但在某些情况下最多可以有 4 个。首次提交后,我们使用 JavaScript 禁用提交按钮。
可能这会有所帮助:有一个会话对象用于存储用户输入(已提交)。
您能想到为什么会发生重复记录的任何场景?
非常感谢
最后,我发现一些移动浏览器忽略了禁用提交按钮的 JavaScript,并且用户设法多次重新提交表单。
最简单的(?)解决方案如下:
在数据库中创建一个表“SubmissionTokens”,其中包含两个字段:Token(唯一标识符)、DateCreated(日期时间)。然后,当加载提交表单的页面时,将令牌添加到数据库并将“id”值保存在同一页面的隐藏字段中。当用户提交表单时,然后从隐藏字段中读取令牌并查看表 SubmissionTokens 中是否存在令牌。如果确实存在,则在数据库中插入一条带有表单数据的新记录,并从 SubmissionTokens 中删除该令牌。您还可以使用 DateCreate 字段使令牌过期。
在工作中,我实现了一些不同的解决方案,只是在插入新记录之前在数据库中查找重复记录。但这是因为有一个特定要求,如果用户在浏览器中单击“返回”,则必须能够重新提交表单。在这种情况下,SubmissionToken 已被删除,第一个解决方案将不起作用。