我猜不是,但是有没有办法在PHP中设置一个cookie,而不必将ob_start()
放在输出的开头?
我的问题是,我正在开发一个类,其中包括需要设置cookie。现在我无法告诉使用它的人"你必须在输出任何输出之前创建一个新的类实例,因为这将是蹩脚的。我可以以某种方式将其拉下来吗?
答案 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=/">
或使用javascript并设置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']);