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

时间:2011-06-28 13:59:58

标签: php cookies

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

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

这几乎就好像,由于获取cookie值的开销,页面的其余部分正在进行加载,并且试图在值到位之前显示。

所以我的问题是,有没有办法“暂停”所有其他处理和输出,直到设置了cookie?我是ob_start的新手,但我想用我的set cookie功能包装会这样做,但这并没有解决它。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

好吧,您可能希望查看ajax call via something like jQuery.

,而不是延迟页面加载

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

  1. 您不会不必要地延迟页面加载
  2. 仅在设置了Cookie时,显示屏才会显示

答案 1 :(得分:1)

跟进我对这个问题的评论。

你应该建立一个这样的逻辑:

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);

答案 2 :(得分:0)

在下一次请求之前,没有PHP无法访问该cookie。

如果cookie不存在,您是否可以直接使用您在cookie中设置的数据?