我有一个PHP页面,我要做的第一件事就是设置cookie。为了在这个cookie中设置数据,我必须进行两次DB查找、一次XML查找和一些数学运算。在HTML的正文中,靠近顶部,我需要显示这个cookie的值。
cookie正在设置,但在第一次加载页面时,不会显示该值。如果我刷新页面,它已设置。我可以看到cookie实际上是通过Firebug设置的。
由于获取cookie值的开销,页面的其余部分几乎都在继续加载,并试图在值到位之前显示。
所以我的问题是,有没有办法"暂停"所有其他处理和输出,直到设置好cookie我是ob_start的新手,但我认为用它包装我的set cookie函数就可以了,但这并没有解决问题。
有什么想法吗?
与其延迟页面加载,不如通过类似jQuery的方法来研究ajax调用。
这基本上允许您在ajax调用中设置cookie,当它返回时,您可以通过显示信息来更新DOM。这样:
- 你不会不必要地延迟页面加载
- 只有设置了cookie后,才会显示
跟进我对该问题的评论。
你应该建立这样一个逻辑:
if(!isset($_COOKIE['yourcookie'])) {
// The cookie is not set
// Set the cookie and place the same data in $myCookie
} else {
// The cookie is set
// Take the data from the cookie and place it in $myCookie
}
// No the cookie data is always available in $myCookie
var_dump($myCookie);
在下一个请求之前,任何PHP都无法访问该cookie。
如果cookie不存在,你可以不直接使用你在cookie中设置的数据吗?