【问题标题】:hitting f5 after clicking the submit button单击提交按钮后按 f5
【发布时间】:2013-02-20 11:52:17
【问题描述】:

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

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

【问题讨论】:

  • 服务器端检查(在数据库中)会更好。
  • 可以看看相关代码吗?
  • 那么 ctrl-r shirt-r 右键单击​​,浏览器中的按钮呢?你无法阻止它。听起来您需要更好地设置兑换。找出是什么原因造成的。
  • 我同意 Sheikh 的观点,服务器端检查可能是个好方法,如果您使用 javascript 来执行此操作,它仍有可能无法正常工作,出于安全原因,人们可以在浏览器中禁用 javascript .

标签: php javascript jquery internet-explorer


【解决方案1】:

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


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


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

【讨论】:

    【解决方案2】:

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

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

    我一直在使用第二种方法(使用会话),效果很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-31
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2022-10-22
      相关资源
      最近更新 更多