在没有ob_start的情况下输出后设置cookie


Set cookie after output without ob_start

我猜不会,但有没有一种方法可以在PHP中设置cookie,而不必将ob_start()放在输出的开头?

我的问题是,我正在开发一个类,其中需要设置一个cookie。现在我不能告诉使用它的人"在进行任何输出之前,你必须创建一个新的类实例",因为这将是蹩脚的。那么我能以某种方式成功吗?

请参阅PHP 已经发送的标头

这里列出的不专业的解决方法适用。具体而言:

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

或者使用javascript并设置document.cookie

您不能。Cookie是作为标头的一部分发送的,所以如果您已经发送了正文,那就太晚了。输出缓冲是解决方案。

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

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

// 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']);