2

如何在文档中间设置 cookie,而不会导致“标头已发送”错误?我要做的是制作一个注销脚本(登录cookie设置工作......太奇怪了。是因为它包含在if语句中吗?)但是我已经回应了页面标题和其他一些东西在页面顶部,在我进行此注销之前。

谢谢!

4

3 回答 3

10

最简单的方法是使用输出缓冲来阻止 PHP 向客户端发送数据,直到您准备好

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

输出缓冲存储所有输出的数据,直到缓冲区被刷新,然后一次全部发送,因此任何之后的回显start都将保持缓冲,直到end_flush然后发送

于 2010-06-10T07:28:56.340 回答
7

尝试将您的应用程序分解为两部分:

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

还可以尝试在您的开发中使用框架,它将提高您的技能和代码的可维护性。

于 2010-06-10T07:28:39.587 回答
2

Cookies 在标头中发送,在发送其他任何内容之前发送。因此,如果您实际上已经向客户端(浏览器)“回显”了某些内容,那么您的标头也已发送。

也就是说,您可以缓冲输出并在所有代码运行后将其全部发送(ob_start()ob_end_flush()

于 2010-06-10T07:29:55.077 回答