Php 在输出后设置cookie,但不启动ob_

Php 在输出后设置cookie,但不启动ob_,php,cookies,setcookie,ob-start,javascript,Php,Cookies,Setcookie,Ob Start,Javascript,我猜不是,但是有没有一种方法可以在PHP中设置cookie,而不必在输出的开始处放置ob_start() 我的问题是,我正在开发一个类,其中包括需要设置cookie的类。现在,我不能告诉使用它的人“在进行任何输出之前,您必须创建一个新的类实例”,因为这样做是站不住脚的。那我能不能把它弄下来?你不能。Cookie是作为标题的一部分发送的,因此如果您已经发送了正文,则为时已晚。输出缓冲是解决方案 也许您可以使用会话变量来代替。您不能。Cookie是作为标题的一部分发送的,因此如果您已经发送了正文,则

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


我的问题是,我正在开发一个类,其中包括需要设置cookie的类。现在,我不能告诉使用它的人“在进行任何输出之前,您必须创建一个新的类实例”,因为这样做是站不住脚的。那我能不能把它弄下来?

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


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

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

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

请参见

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

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

或者使用并设置
document.cookie

请参见

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

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


或者使用并设置
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']);

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

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

为什么在输出之前设置一个cookie是站不住脚的?如果这是你的代码,那么这样做并不站不住脚,因为强迫其他开发人员这样做是站不住脚的,因为他想使用你的类。如果你记录该类负责发送HTTP头(如set cookie),那么说在发送任何输出之前需要使用它是没有错的。例如,这正是
setcookie
文档所说的。为什么在输出之前设置cookie是不明智的?如果是您的代码,那么这样做并不明智,只是因为他想使用您的类而强迫其他开发人员这样做是不明智的。如果您记录该类负责发送HTTP头(如set cookie),说在发送任何输出之前需要使用它没有什么错。例如,这正是
setcookie
文档所说的。我可能只会在cookie无法设置的情况下这样做,所以谢谢,这也是一个很好的建议:)我可能只会在cookie无法设置的情况下这样做,所以谢谢,这也是一个很好的建议:)$\u服务器['HTTP\u REFERER']有时是空的,所以在使用之前先测试一下$url\u REFERER=空($\u SERVER['HTTP\u REFERER'])?'':$\u SERVER['HTTP\u REFERER']$_服务器['HTTP_REFERER']有时是空的,所以在使用它之前先测试一下$url\u REFERER=空($\u SERVER['HTTP\u REFERER'])?'':$\u SERVER['HTTP\u REFERER'];