【问题标题】:Set new session variable when user hits the browsers back button (and the page is not refreshed)?当用户点击浏览器后退按钮(并且页面未刷新)时设置新的会话变量?
【发布时间】:2012-08-13 13:45:49
【问题描述】:

我正在使用 php session 管理我的类别变量。

如果用户这样点击:

  1. 索引
  2. 类别(类别设置会话变量)
  3. product(product 获取该变量)

之后,如果用户没有按主页链接(刷新索引页面),而是按浏览器的后退按钮,会发生这种情况:

  1. 用户刚刚到达带有先前设置的类别变量的索引页面;
  2. 如果他直接从索引中单击产品,则会显示旧类别。

基本上, 当用户点击浏览器的返回按钮(并且页面没有刷新)时,有没有办法设置新的会话变量?

【问题讨论】:

    标签: php


    【解决方案1】:

    这正是您应该保持请求自包含的原因。构建导航所需的所有信息都应该以某种方式出现在请求本身中,即 URL 中。您可以从用户正在查看的产品或请求中已包含的其他一些信息中推断出类别,或者您应该在查询参数中传输选定的类别 (...?cat=42)。这样,每个请求都会在其内部表达所有必要的信息,并且不会破坏保存在其他地方的任何单独的状态。

    【讨论】:

      【解决方案2】:

      如果点击了一个产品,那么当前的类别应该从该产品所在的类别中设置。忽略旧的存储类别并改用产品的类别。

      就底层 http 请求而言,单击后退按钮的用户没有什么特别或独特的。浏览器要么使用它的缓存,甚至不向网络服务器发出另一个请求,要么像点击链接一样发出请求以再次获取上一页。

      你可以用 javascript 做一些花哨的东西来检测它,但我非常怀疑这将是一个优雅或最好的解决方案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-03-21
        • 1970-01-01
        • 2013-06-23
        • 1970-01-01
        • 2013-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多