我猜不是,但是有没有办法在 PHP 中设置一个 cookie 而不必放在ob_start()
输出的开头?
我的问题是,我正在开发一个类,其中需要设置一个 cookie。现在我不能告诉使用它的人“你必须在进行任何输出之前创建一个类的新实例”,因为那会很蹩脚。所以我能以某种方式把它拉下来吗?
你不能。Cookie 是作为标头的一部分发送的,因此如果您已经发送了正文,则为时已晚。输出缓冲是解决方案。
也许您可以改用会话变量。
此处列出的非专业解决方法适用。具体来说:
<META HTTP-EQUIV="Set-Cookie"
CONTENT="cookievalue=xy;expires=Friday, 14-Dec-12 12:12:12 GMT; path=/">
或使用javascript并设置document.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']);