Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 当用户点击浏览器后退按钮(且页面未刷新)时设置新会话变量?_Php - Fatal编程技术网

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

Php 当用户点击浏览器后退按钮(且页面未刷新)时设置新会话变量?,php,Php,我正在使用php会话管理我的类别变量 如果用户像这样单击: 索引 类别(类别设置会话变量) 产品(产品获取该变量) 之后,如果用户不按主页链接(刷新索引页),而是按浏览器的后退按钮,则会发生以下情况: 用户刚刚到达索引页面,之前设置了category变量 如果他直接从索引中单击某个产品,则会显示旧类别 基本上, 当用户点击浏览器后退按钮(且页面未刷新)时,是否有办法设置新的会话变量?如果单击了某个产品,则应根据该产品所列的类别设置当前类别。忽略旧的存储类别,改用产品的存储类别 就底层http请求

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

如果用户像这样单击:

  • 索引
  • 类别(类别设置会话变量)
  • 产品(产品获取该变量)
  • 之后,如果用户不按主页链接(刷新索引页),而是按浏览器的后退按钮,则会发生以下情况:

  • 用户刚刚到达索引页面,之前设置了category变量
  • 如果他直接从索引中单击某个产品,则会显示旧类别
  • 基本上,
    当用户点击浏览器后退按钮(且页面未刷新)时,是否有办法设置新的会话变量?

    如果单击了某个产品,则应根据该产品所列的类别设置当前类别。忽略旧的存储类别,改用产品的存储类别

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


    你可以用javascript做一些奇特的事情来检测它,但我高度怀疑这是否是一个优雅或最好的解决方案。

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