【问题标题】:Is there any way in PHP to detect if request is coming from browser back button?PHP中有什么方法可以检测请求是否来自浏览器后退按钮?
【发布时间】:2012-05-14 08:50:23
【问题描述】:

我正在开发处理购物车的 wordpress 插件。我有两个页面,结帐页面和感谢页面。通过https://mysite.com/checkout/?action=add&subscription=23 之类的链接将商品添加到购物车。我正在使用 Session 在结帐页面上将商品添加到购物车。

假设如果我添加三个添加项: https://mysite.com/checkout/?action=add&subscription=1 https://mysite.com/checkout/?action=add&subscription=2 https://mysite.com/checkout/?action=add&subscription=3(浏览器地址栏中的最后一个链接)

当用户在结帐页面上结帐时,用户将被重定向到感谢页面。我的浏览器后退按钮有问题,如果用户按下后退按钮,谢谢,他会再次重定向到结帐页面,并再次添加最后一项(https://mysite/checkout/?action=add&subscription=3),因为这是最后一次浏览器地址栏中的链接。

如何防止浏览器在感谢页面上按下用户返回按钮时再次添加最后一项? PHP中有什么方法可以检测请求是否来自浏览器后退按钮?我认为,有办法使用会话来处理它吗?

如果还有其他合适的方法可以做到这一点,请指导我?谢谢

【问题讨论】:

  • 您应该使用 POST 请求在服务器上执行操作,例如将商品添加到购物车。这消除了问题,因为 URL 不会导致进行更改,并在用户尝试重新提交请求时向用户发出警告。 POST/REDIRECT/GET 是执行此操作的方法。

标签: php javascript wordpress


【解决方案1】:

处理这个问题的最佳方法是使用POST/REDIRECT/GET 模式。

【讨论】:

    【解决方案2】:

    使用Post Redirect Get 设计模式。

    换句话说,处理的脚本不是显示结果的脚本。

    【讨论】:

      【解决方案3】:

      您可以使用 $_SERVER['HTTP_REFERER'] 查看您的父页面,并检测用户是否来自感谢页面

      【讨论】:

      • $_SERVER['HTTP_REFERER'] 不适用于浏览器后退按钮。
      猜你喜欢
      • 2020-03-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 2022-01-17
      • 2014-11-06
      相关资源
      最近更新 更多