5

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

有没有办法可以禁用f5按钮使用javascript?这是解决这个问题的最好方法吗?我已经尝试了很多我在网上找到的脚本来执行此操作,但没有一个能够实现。有没有更好的方法可以解决这个问题?也许从应用程序方面?

4

2 回答 2

1

编辑:如果索取奖金的结果已建立数据库,您可以在确认屏幕上加载现有索赔并测试是否已经存在。


编辑:您可以做的另一个巧妙的技巧是对 $_POST 进行 serailize/json_encode 并从中生成哈希,将其存储在数据库或用户会话中,并针对它进行测试。


我会为表单生成一个一次性使用令牌(哈希)并将其作为隐藏字段进行数据库化,如果重新提交发布数据,则该令牌将已被使用,并且您可以使发布请求无效。

于 2012-10-18T03:28:04.520 回答
0

有几种方法可以解决您的问题:

在这里结帐:http: //bjw.co.nz/developer/general/75-how-to-prevent-form-resubmission

我一直在使用第二种方法(使用会话),它确实运作良好。

于 2012-10-18T06:30:34.197 回答