当用户点击浏览器后退按钮(并且页面未刷新)时设置新的会话变量?

时间:2012-08-13 13:45:49

标签: php

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

如果用户点击次数如下:

  1. 索引
  2. 类别(类别设置会话变量)
  3. 产品(产品取得变量)
  4. 如果是用户,而不是按主页链接(刷新索引页面),请按浏览器的后退按钮,这会发生:

    1. 用户刚刚到达索引页面,其中包含先前设置的类别变量;
    2. 如果他直接从索引点击产品,则会显示旧类别。
    3. 基本上, 有没有办法在用户点击浏览器后退按钮时设置新的会话变量(并且页面没有刷新)?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

如果单击了产品,则应从列出产品的类别中设置当前类别。忽略旧的存储类别并改为使用产品。

用户单击后退按钮在底层http请求方面没有任何特殊或独特之处。浏览器将使用其缓存,甚至不向Web服务器发出另一个请求,或者像点击链接再次获取上一页一样发出请求。

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