我得到的东西必须通过URL参数插入到数据库中,遗憾的是我现在无法改变它。所以它是这样的:send.php?id = 2& messag = hello等。
发送数据后,我将使用PHP位置的用户发送到另一个页面。如果用户按下后退按钮,则数据当然会再次发送,因为URL仍包含相同的参数。我也无法进行自我重定向,因为数据来自GET url paremeters。
不幸的是,我也无法访问用户用来提交信息的表单,以创建一个独特的时间戳或类似的东西。在这种情况下避免双重提交的最佳方法是什么?
答案 0 :(得分:0)
如果您无法在请求导致更改时强烈建议将GET更改为POST,我建议您检查后端的重复条目。
由您决定什么构成重复:所有参数是否相同?是一些关键参数是一样的吗?或者是同一个用户在过去5分钟内发送的同一个查询?
另一种解决方案是使用"nonce"。生成页面时,沿着nonce发送 - 一个只能使用一次的唯一令牌。当他们点击“返回”时,它会尝试发送相同的随机数,你可以检查它已经用完了。
答案 1 :(得分:0)
我认为您不能通过在$_SESSION
或$_COOKIE
中存储内容来检查提交内容。
您可以设置一个时间戳并对其进行检查,例如,在10分钟的时间内不允许重新发送。
事实是它编程不好。插入请求必须是POST
。这样浏览器就会提醒您。并且重定向将起作用。