用户按下后退按钮时禁用重新发布(数据来自URL参数)

时间:2013-09-20 18:13:41

标签: php

我得到的东西必须通过URL参数插入到数据库中,遗憾的是我现在无法改变它。所以它是这样的:send.php?id = 2& messag = hello等。

发送数据后,我将使用PHP位置的用户发送到另一个页面。如果用户按下后退按钮,则数据当然会再次发送,因为URL仍包含相同的参数。我也无法进行自我重定向,因为数据来自GET url paremeters。

不幸的是,我也无法访问用户用来提交信息的表单,以创建一个独特的时间戳或类似的东西。在这种情况下避免双重提交的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

如果您无法在请求导致更改时强烈建议将GET更改为POST,我建议您检查后端的重复条目。

由您决定什么构成重复:所有参数是否相同?是一些关键参数是一样的吗?或者是同一个用户在过去5分钟内发送的同一个查询?

另一种解决方案是使用"nonce"。生成页面时,沿着nonce发送 - 一个只能使用一次的唯一令牌。当他们点击“返回”时,它会尝试发送相同的随机数,你可以检查它已经用完了。

答案 1 :(得分:0)

我认为您不能通过在$_SESSION$_COOKIE中存储内容来检查提交内容。

您可以设置一个时间戳并对其进行检查,例如,在10分钟的时间内不允许重新发送。

事实是它编程不好。插入请求必须是POST。这样浏览器就会提醒您。并且重定向将起作用。