WordPress 4.9.3,$ _COOKIE和session_start()

时间:2018-03-30 01:02:57

标签: php wordpress cookies

我解决了我的问题,但我不知道为什么会这样。我希望有人可以解决一些问题?

我有一个WordPress网站。如果新用户访问该网站,他们会在主页上看到一个通用元素。当他们访问内部页面时,会创建一个cookie。当用户再次访问主页时,他们会看到基于cookie的自定义元素。

我遇到的问题是,当用户从内部页面返回主页时,即使新cookie设置了正确的值,$ COOKIE超全局也不会重置,直到执行刷新。您可以根据需要导航到尽可能多的不同页面,但在执行文字刷新之前,仍然不会重置超全局。这是使用setcookie()和直接设置超级全局。

通过在标头中添加session_start()来解决这个问题。我认为session_start()影响了SESSION超全局。为什么这个解决方案也会影响COOKIE超全球?

1 个答案:

答案 0 :(得分:2)

  

为什么这个解决方案也会影响COOKIE超全球?

很可能它没有,不是直接 - 但是sending different headers regarding caching,它影响了浏览器在再次显示相同的网址时检查更改的方式,而在您只是提交了陈旧的副本之前来自缓存。

  

对我来说,奇怪的是,cookie也会被缓存

好吧,cookie本身并没有得到缓存" - 但是你在cookie上输出依赖的文件是。你仍然看到你加载的页面的第一个版本 - 后面的PHP代码没有再次执行,因为浏览器实际上并没有再次从服务器请求URL。

但是,当服务器第一次加载时,发送了一个响应标头,指示该页面不应被缓存(或者您在再次显示资源之前检查服务器的客户端) - 这导致浏览器创建一个新的返回页面时请求。