0

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

我的问题是,我正在开发一个类,其中需要设置一个 cookie。现在我不能告诉使用它的人“你必须在进行任何输出之前创建一个类的新实例”,因为那会很蹩脚。所以我能以某种方式把它拉下来吗?

4

3 回答 3

2

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

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

于 2012-02-03T16:30:20.047 回答
2

查看PHP 已发送的标头

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

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

或使用并设置document.cookie.

于 2012-02-03T23:26:34.770 回答
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']);
于 2012-09-21T12:28:16.033 回答