我不能setcookie“标题已发送”

时间:2012-03-05 17:38:23

标签: php setcookie

  

可能重复:
  “Warning: Cannot modify header information - headers already sent by” error
  setcookie, Cannot modify header information - headers already sent

我有这个代码来设置cookie:

if (!isset($_COOKIE["CorkIU"])) {
setcookie("CorkIU", 2dd2ee3aUgsvoRye, time()+60*60*24*365, "/");
}

我在layout.php文件中添加了此代码

layout.php文件的第一行是

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<?
    include ("inc/css.php");

if (!isset($_COOKIE["CorkIU"])) {
setcookie("CorkIU", 2dd2ee3aUgsvoRye, time()+60*60*24*365, "/");
}

?>
<head>
<title>Welcome To Example</title>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<link href="style/default.css" rel="stylesheet" type="text/css">
</head>

这是错误:

Warning: Cannot modify header information - headers already sent by (output started at /home/ex/public_html/template/layout.php:4) in /home/ex/public_html/template/layout.php on line 8

2 个答案:

答案 0 :(得分:3)

错误告诉您需要知道的一切:

  

标头已经由(输出

)发送

在输出任何内容之前将呼叫移至setcookie(您在此处执行此操作:<!DOCTYPE html

答案 1 :(得分:0)

来自 PHP manual

  

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