0

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

如果用户这样点击:

  1. 指数
  2. 类别(类别设置会话变量)
  3. 产品(产品获取该变量)

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

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

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

4

2 回答 2

1

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

于 2012-08-13T14:06:53.593 回答
0

如果单击产品,则应根据该产品列出的类别设置当前类别。忽略旧的存储类别并使用产品的替代品。

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

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

于 2012-08-13T14:04:07.370 回答