当按下返回按钮时,保留SESSION值或Cookie


Keep SESSION value OR Cookies when hitting back button

我有两页。第2页可由第1页访问。

问题是,我想检测是否有人通过返回按钮从第2页返回第1页,以便显示其他内容。

      PAGE 1 -------------------------> PAGE 
 Normale Display             Create SESSION or COOKIE
                                         |
                                         |    
If SESSION or COOKIE  <--------- Pressed back button
-> Secondary Display

所以我试着:

  • 创建cookie,但未读取
  • 创建会话变量,但是它也没读
  • 清空缓存,但我收到了一条警告信息
  • 本地存储/会话存储的反应仍然像Cookie

有人能为我找到一个解决方案吗?要么强制阅读其中一件事,要么强制页面在按下后退按钮时表现得像是一种正常的方式?

我对任何解决方案都持开放态度这已经是漫长的两天了。

编辑:

让我们改变一下我的问题:如何使用后退按钮检测页面是否被访问

所以我看到了这个问题,但它是一个旧问题(2009年),是一个使用Iframe的答案,如果我能避免的话,我也会喜欢。

最简单的方法是检查$_SERVER['HTTP_REFERER'],但如果有人在查看您的网站时打开了多个选项卡,则无法正常工作。

我认为你的问题没有什么"好"的解决办法。

编辑:我想更好的问题是问你具体想实现什么。为什么你需要知道是否有人带着返回按钮从第2页来到第1页?有其他方法可以解决你的问题吗?

我想您可以通过更改本地存储来做到这一点。

初始化第2页时,请检查本地存储的精确存储是否为空。如果没有,请另外显示您想要的内容。

要做到这一点,你必须放置一个控制器,当他被调用时,控制器会这样做,并且不要忘记在加载页面2时调用它。

但是您需要清空该本地存储。因此,每次进入除第二个页面之外的另一个页面时,您可能需要重置它。

它有点脏,但它应该起作用。

注意:使用Angular JS很容易做到这一点。使用纯Javascript可能不那么容易做到,但我非常确信这是可能的。

希望这能有所帮助。

好的,所以解决方案是通过url的历史发送变量。

由于HTML5,您可以修改导航历史。

所以基本上,我的想法是在url中发送值,就像在get请求中一样:

yoursite.com/where_you_are?something=value

为此,您可以使用:history.replaceState({},'',newURL) 修改url历史记录

最后,如果您想将对象发送到您的页面,您可以像使用{myobject: value, ...}一样使用{}

希望这能有所帮助,看看上面链接的mozilla的伟大文档。

最终也会看到