保留所有PHP/HTML输出,直到设置cookie


Hold all PHP/HTML output until cookie is set?

我有一个PHP页面,我要做的第一件事就是设置cookie。为了在这个cookie中设置数据,我必须进行两次DB查找、一次XML查找和一些数学运算。在HTML的正文中,靠近顶部,我需要显示这个cookie的值。

cookie正在设置,但在第一次加载页面时,不会显示该值。如果我刷新页面,它已设置。我可以看到cookie实际上是通过Firebug设置的。

由于获取cookie值的开销,页面的其余部分几乎都在继续加载,并试图在值到位之前显示。

所以我的问题是,有没有办法"暂停"所有其他处理和输出,直到设置好cookie我是ob_start的新手,但我认为用它包装我的set cookie函数就可以了,但这并没有解决问题。

有什么想法吗?

与其延迟页面加载,不如通过类似jQuery的方法来研究ajax调用。

这基本上允许您在ajax调用中设置cookie,当它返回时,您可以通过显示信息来更新DOM。这样:

  1. 你不会不必要地延迟页面加载
  2. 只有设置了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中设置的数据吗?