setcookie的问题

时间:2010-03-15 10:51:33

标签: php xampp

有一个想法,我无论如何都无法理解:((( 当我尝试设置cookie(它在login.php的第28行)时,浏览器返回错误!

  

无法修改标题信息 - 已在第28行的C:\ xampp2 \ htdocs \ video \ login.php中发送的标题(输出从C:\ xampp2 \ htdocs \ video \ index.php:9开始)

但在索引php的第9行,我没有任何标题!有一个标签!!!
我无法理解!有人可以告诉我为什么它会给我这样的错误吗?

5 个答案:

答案 0 :(得分:3)

Cookie以标头形式发送。来自setcookie的PHP文档:

  

setcookie()定义要与其他HTTP标头一起发送的Cookie。与其他标头一样,Cookie必须在之前发送脚本的任何输出(这是协议限制)。这要求您在任何输出之前调用此函数,包括和标记以及任何空格。

此外,如果您的页面以UTF-8格式保存,则BOM(字节顺序标记)将阻止您设置任何标题,因为它计为输出。见http://bugs.php.net/bug.php?id=22108。要解决此问题,您需要保存没有字节顺序标记的文件。

另请参阅:Byte order mark#Unwanted BOMs - Wikipedia

答案 1 :(得分:1)

在发送标题之前,您无法在网站上打印任何内容。

答案 2 :(得分:1)

首先在任何html标签(a.k.a输出)之前设置cookie,甚至在声明!DOCTYPE html head ,标题信息等之前。例如,您的文件可能类似于:

<?php setcookie("oreo", $value, time()+(60*60*24*30));?>
<?php setcookie("vanilla_wafer", $wafer, time()+(60*60*24*30));?>
<!DOCTYPE html>
<head>
    <title>Cookies and Milk</title>
</head>
<body>
<p>yo</p>
</body>
</html>

答案 3 :(得分:0)

请发布一些代码。 这个错误意味着什么,已经发送了什么(也可以是回声,错误通知等)。

答案 4 :(得分:0)

您必须在应用程序的最顶层放置标题功能。就像基本上第一行是header();