2012-10-18 323 views
4

我有一个PHP应用程序,用户可以申请奖金。但是,在奖励兑换代码运行之前有一个确认页面。 问题是,在IE,如果您在点击继续按钮后立即点击f5,当奖励兑换码已经被继续按钮触发并且实际通过时,刷新确认页面。但是由于用户仍然看到确认页面,他们会再次点击继续按钮,现在他们得到一个错误,因为他们已经注册。点击提交按钮后点击f5

有没有一种方法可以禁用f5按钮使用javascript?这是最好的方式去做这件事吗?我尝试了很多我在网上找到的脚本来做到这一点,但是他们都没有达到目的。有没有更好的办法可以解决这个问题?也许从应用程序方面?

+4

服务器端检查(在数据库中)会更好。 –

+1

我们可以看到相关的代码吗? – SomeKittens

+0

那么CTRL-R衬衫 - 右键单击​​,浏览器中的按钮?你无法阻止它。听起来你需要更好地设置赎回。找出导致它的原因。 – epascarello

回答

1

编辑:如果声称奖金的结果是基于数据库的,则可以在确认屏幕上加载现有的声明并测试该声明已存在。


编辑:另一绝招你可以做的是serailize/json_encode的$ _ POST,并从这个产生散列,其存储在数据库或用户会话,并对它进行测试。


我会产生和数据库中的单次使用令牌(散)的形式作为隐藏字段,如果后期数据重新sumbited,令牌早就被消耗,并且可以无效POST请求。