输出后没有ob_start设置cookie

时间:2012-02-03 15:49:39

标签: php cookies setcookie ob-start

我猜不是,但是有没有办法在PHP中设置一个cookie,而不必将ob_start()放在输出的开头?

我的问题是,我正在开发一个类,其中包括需要设置cookie。现在我无法告诉使用它的人"你必须在输出任何输出之前创建一个新的类实例,因为这将是蹩脚的。我可以以某种方式将其拉下来吗?

3 个答案:

答案 0 :(得分:2)

你做不到。 Cookie会作为标题的一部分发送,因此,如果您已经发送了正文,则为时已晚。输出缓冲是解决方案。

也许您可以使用会话变量。

答案 1 :(得分:2)

请参阅Headers already sent by PHP

此处列出的非专业解决方法适用。具体做法是:

<META HTTP-EQUIV="Set-Cookie" 
CONTENT="cookievalue=xy;expires=Friday, 14-Dec-12 12:12:12 GMT; path=/">

或使用并设置document.cookie

答案 2 :(得分:1)

这是我的工作,对我来说很好。

// Force set cookie now
$_COOKIE['ref_url'] = $_SERVER['HTTP_REFERER'];

// Set cookie after refresh site
setcookie('ref_url', $_SERVER['HTTP_REFERER'], Affiliate::$cookieTime);

// Diplay $_COOKIE
var_dump($_COOKIE['ref_url']);