【发布时间】:2018-03-30 01:02:57
【问题描述】:
我解决了我的问题,但我不知道它为什么有效。我希望有人能解释一下吗?
我有一个 WordPress 网站。如果新用户访问该站点,他们会在主页上看到一个通用元素。当他们访问内部页面时,会创建一个 cookie。当用户再次访问主页时,他们会看到基于 cookie 的自定义元素。
我遇到的问题是,当用户从内部页面返回主页时,即使新 cookie 设置了正确的值,$COOKIE 超全局变量在执行刷新之前不会重置。您可以根据需要导航到尽可能多的不同页面,但在执行字面刷新之前,超全局仍然不会重置。这是同时使用 setcookie() 和直接设置超级全局。
已通过将 session_start() 添加到标头来解决此问题。我认为 session_start() 影响了 SESSION 超级全局。为什么这个解决方案也会影响到 COOKIE 超全球?
【问题讨论】:
-
很可能它没有,不是直接的 - 但是sending different headers regarding caching,它影响了您的浏览器在再次显示相同的 URL 时被指示检查更改的方式,而在您只是得到一个陈旧的副本之前从缓存中呈现。
-
这是有道理的。我认为这也与缓存有关——对我来说,cookie 也会被缓存似乎很奇怪。您知道添加 session_start() 是否会对网站的性能产生任何影响吗?我很难找到关于所有函数功能的好的文档。
-
会话也是 cookie(无论如何 SESS ID 是),但我同意它可能是缓存。我不确定所有 session_start 的作用,但如果你没有任何问题,我不会太担心。
-
感谢 cmets。 @CBroe 您可以将您的评论转换为答案吗?明天我将确认使用 session_start() 发送不同的缓存标头并接受您的回答。