2010-06-10 45 views
2

我怎么可以设置Cookie在文件的中间,而不会产生“头已经发出”错误?我正在试图做的是做一个注销脚本(日志中的cookie设置工作......这样奇怪。是不是因为它是封闭在一个if语句?)但我已经回应了页面标题和一些其他的东西在我做出此注销之前,在页面的顶部。如何通过PHP在文档中设置cookie?

谢谢!

+1

谁downvoting的一切,而不发布评论? – animuson 2010-06-10 07:35:50

+0

*耸耸肩*,我想知道=/ – Sam 2010-06-10 07:37:10

+0

对不起这是一个错误。 – 2010-06-10 07:44:18

回答

7

最简单的方法是使用output buffering直到你准备

<?php 
ob_start(); 
// your code 
ob_end_flush(); 
?> 

输出缓冲存储所有输出的数据,直到缓冲区被刷新到将数据发送到客户端停止PHP,然后把它在所有一次,因此在start之后的任何回波将保持缓冲直到end_flush,然后发送

+0

谢谢谢谢你谢谢= D! – Sam 2010-06-10 07:34:06

7

尝试分解你的应用程序分为两个部分:

首先,取消设置cookie,那么你的结果页面上的重定向用户。这是一种常用的工作方式。

还尝试使用了一个框架,你的发展,它会提高你的技能和你的代码的可维护性。

+3

+1用于重构。在* output *中间设置cookie(当然不是文档的中间)是无稽之谈。 – 2010-06-10 07:33:43

+1

我会研究框架:)。 – Sam 2010-06-10 07:34:48

2

在发送其他任何内容之前发送的标头中发送Cookie。因此,如果您实际上向客户端(浏览器)“呼应”了某些内容,则您的标题也已发送。

这就是说,你可以缓冲你的输出,一旦所有的代码已运行(ob_start()ob_end_flush())发送所有