【问题标题】:Keep SESSION value OR Cookies when hitting back button点击返回按钮时保留 SESSION 值或 Cookie
【发布时间】:2016-11-23 18:31:27
【问题描述】:

我有两页。第 2 页可以通过第 1 页访问。

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

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

所以我尝试了:

  • 创建一个 cookie,但它没有被读取
  • 创建一个会话变量,但 也没人读过
  • 清空缓存,但我收到一条警告消息
  • 本地存储/会话存储仍然像 Cookie 一样反应

有没有人为我找到解决方案,要么强制读取其中一个内容,要么强制页面在按下后退按钮时表现得好像这是一种正常的访问方式?

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

编辑:

让我稍微改变一下我的问题:如何使用返回按钮检测页面是否到达?

所以我见过this question,但它是一个旧的(2009 年)和一个使用 iframe 的答案,如果我可以避免的话,我也想要。

【问题讨论】:

  • 为什么会话不起作用?
  • 我刚刚编辑了我的问题。
  • 一些代码呢?可能 cookie 和 session 仅用于编码问题?
  • 他们工作得很好,这实际上是有问题的后退按钮工作的原生方式。它会显示与您离开的完全相同的页面而不刷新它,因此它无法访问新的 Cookie 或新的 $_SESSION 变量。如果您愿意,可以自己尝试,在页面上生成一个会话变量,然后查看按下后退按钮时它是否仍然存在;)

标签: javascript php cookies


【解决方案1】:

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

我认为您的问题没有任何“好的”解决方案。

编辑: 我想更好的问题是问你具体要达到什么目标。为什么你需要知道是否有人通过返回按钮从第 2 页来到第 1 页?有没有其他方法可以解决您的问题?

【讨论】:

  • 已经试过了,这取决于浏览器和很多因素,确实不太可靠。
  • 我刚刚编辑了我的答案。您的问题还有其他解决方案吗?
  • 它很复杂,但这是由于修改了一个调用 Ajax 方法的表单,当我通过返回按钮返回页面时需要记住该值
【解决方案2】:

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

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

为此,您必须放置一个控制器,该控制器在调用他时执行此操作,并且不要忘记在加载页面 2 时调用它。

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

这有点脏,但应该可以。

注意:使用 Angular JS 很容易做到这一点。使用纯 Javascript 可能并不容易做到,但我很确定这是可能的。

希望能有所帮助。

【讨论】:

  • 如果打开多个标签怎么办?您在使用第 3 页时删除了本地存储。当您在第 2 页点击返回按钮时会发生什么?
  • 遗憾的是 localStorage 反应为 Cookie 并且变量没有得到,而是返回时刷新。
【解决方案3】:

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

从 HTML5 开始你可以modify the history of navigation。

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

yoursite.com/where_you_are?something=value

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

最终,如果您想将对象发送到您的页面,您可以使用{},例如{myobject: value, ...}。

希望这能有所帮助,并查看上面链接的 mozilla 的精彩文档。

最后看看there too

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    • 1970-01-01
    • 2014-10-05
    • 2020-04-25
    • 1970-01-01
    • 2017-10-13
    相关资源
    最近更新 更多