我怎么可以设置Cookie在文件的中间,而不会产生“头已经发出”错误?我正在试图做的是做一个注销脚本(日志中的cookie设置工作......这样奇怪。是不是因为它是封闭在一个if语句?)但我已经回应了页面标题和一些其他的东西在我做出此注销之前,在页面的顶部。如何通过PHP在文档中设置cookie?
谢谢!
我怎么可以设置Cookie在文件的中间,而不会产生“头已经发出”错误?我正在试图做的是做一个注销脚本(日志中的cookie设置工作......这样奇怪。是不是因为它是封闭在一个if语句?)但我已经回应了页面标题和一些其他的东西在我做出此注销之前,在页面的顶部。如何通过PHP在文档中设置cookie?
谢谢!
最简单的方法是使用output buffering直到你准备
<?php
ob_start();
// your code
ob_end_flush();
?>
输出缓冲存储所有输出的数据,直到缓冲区被刷新到将数据发送到客户端停止PHP,然后把它在所有一次,因此在start
之后的任何回波将保持缓冲直到end_flush
,然后发送
谢谢谢谢你谢谢= D! – Sam 2010-06-10 07:34:06
尝试分解你的应用程序分为两个部分:
首先,取消设置cookie,那么你的结果页面上的重定向用户。这是一种常用的工作方式。
还尝试使用了一个框架,你的发展,它会提高你的技能和你的代码的可维护性。
+1用于重构。在* output *中间设置cookie(当然不是文档的中间)是无稽之谈。 – 2010-06-10 07:33:43
我会研究框架:)。 – Sam 2010-06-10 07:34:48
在发送其他任何内容之前发送的标头中发送Cookie。因此,如果您实际上向客户端(浏览器)“呼应”了某些内容,则您的标题也已发送。
这就是说,你可以缓冲你的输出,一旦所有的代码已运行(ob_start()
和ob_end_flush()
)发送所有
谁downvoting的一切,而不发布评论? – animuson 2010-06-10 07:35:50
*耸耸肩*,我想知道=/ – Sam 2010-06-10 07:37:10
对不起这是一个错误。 – 2010-06-10 07:44:18