【发布时间】:2014-01-30 18:02:32
【问题描述】:
PHP Post/Redirect/Get 解决方案仅用于刷新页面?
如果用户点击后退按钮两次并重新发送表单会怎样?我找到的唯一解决方案是检查我的数据库是否已经发布了相同的数据。
在不查询数据库的情况下有没有其他解决方案?
提前谢谢你!!!
【问题讨论】:
-
你在说什么形式?
标签: php back-button post-redirect-get
PHP Post/Redirect/Get 解决方案仅用于刷新页面?
如果用户点击后退按钮两次并重新发送表单会怎样?我找到的唯一解决方案是检查我的数据库是否已经发布了相同的数据。
在不查询数据库的情况下有没有其他解决方案?
提前谢谢你!!!
【问题讨论】:
标签: php back-button post-redirect-get
PRG 也非常适合浏览器的后退按钮支持。 HTTP 重定向替换浏览器历史记录中的 URL,而不是添加新条目。 如果您始终如一地应用 PRG,即始终从 POST 返回重定向,则浏览器历史记录将仅包含“安全”页面 (GET),历史记录中永远不会有 POST URL。
不过,仍有可能收到重复的表单提交。例如,如果用户双击提交按钮。因此,如果您想更加安全,则需要一些额外的机制(例如 nonce)来防止重复提交。
【讨论】:
使用 PRG 是因为 HTTP 的性质。 POST 不是安全操作,因此首选 PRG。
【讨论】: