按下后退按钮时保持SESSION值或Cookies

时间:2016-07-20 13:27:07

标签: javascript php cookies

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

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

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

所以我试着:

  • 创建一个cookie,但它没有阅读
  • 创建一个Session变量但是 它既没有读过
  • 清空缓存,但最后收到了警告信息
  • 本地存储/会话存储仍然像Cookie一样反应

有没有人为我看到一个解决方案,要么强制阅读其中一件事,要么强迫页面按下,当按下后退按钮时它就像是一种普通的方式?

我愿意接受任何解决方案这已经过了两天漫长的日子。

编辑:

让我的问题改为:如何使用后退按钮检测网页是否到达?

所以我已经看过this question,但它是旧的(2009)和使用Iframe的答案,如果我能避免我也喜欢。

3 个答案:

答案 0 :(得分:0)

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

我认为没有任何好的&#34;解决你的问题。

修改 我想更好的问题是问你想要具体实现什么。为什么你需要知道是否有人通过返回按钮来到第2页的第1页?有没有其他方法可以解决你的问题?

答案 1 :(得分:0)

你可以通过更改本地存储来实现这一点。

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

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

但您需要清空该本地存储空间。因此,您可能希望每次进入除第二页以外的其他页面时重置它。

它有点脏,但应该有效。

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

希望可以提供帮助。

答案 2 :(得分:0)

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

从HTML5开始,您可以modify the history of navigation

所以基本上我的理念是在url中发送值,如get请求:

yoursite.com/where_you_are?something=value

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

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

希望这可以提供帮助,并查看上面链接的mozilla的精彩文档。

最后看看there too