无法修改PHP特定的头信息

时间:2015-11-22 19:11:44

标签: php cookies

试图找出为什么我没有获得此脚本的任何输出。我收到这个错误:

  

警告:无法修改标题信息 - 已在/Library/WebServer/Documents/WEBB_SERVER/4.2x/index中发送的标题(输出从/Library/WebServer/Documents/WEBB_SERVER/4.2x/index.php:38开始)第23行的.php

     

警告:无法修改标题信息 - 已在/Library/WebServer/Documents/WEBB_SERVER/4.2x/index中发送的标题(输出从/Library/WebServer/Documents/WEBB_SERVER/4.2x/index.php:38开始)第25行的.php

我打算打印cookie的名称和保存时间。我知道错误警告我在PHP标记之前/之后某处可能有空格,但无法找到问题。

为什么我的输出没有显示?名称(“Cookie怪物”)和时间。我认为这与警告有关。

任何建议表示赞赏!

<?php

class cookie {

    /* Konstruktor som skriver ut information om kakor - finns det inga så skapas dem */

    public function __construct() {

        if (isset($_COOKIE['time']) && isset($_COOKIE['name'])) {
            echo "Name of cookie: " . $_COOKIE['name'];
            echo "</br>";
            echo "Time of creeation: " . $_COOKIE['time'];
        } else {
            $this -> SetCookie();
        }
    }

    /* Funktion för att skapa cookies */

    public function SetCookie() {
        $expire = time() + 60 * 60 * 3;
        $now = @date("Y-m-d H:i:s");
        setcookie('time', $now, $expire);
        $_COOKIE['time'] = $now;
        setcookie('name', "Cookie monster", $expire);
        $_COOKIE['name'] = "Cookie monster";
    }

}
?>

<!DOCTYPE html>
<html>
    <head>
        <title>Test</title>
    </head>
    <body>
        <?php
        $t = new cookie();
        ?>
    </body>
</html>

1 个答案:

答案 0 :(得分:1)

您在打印任何内容后都无法设置任何Cookie,因为setcookie参数正在请求标头中发回,因此如果您打印的内容比您不能设置任何Cookie。试试这个:

<?php

class cookie {

/* Konstruktor som skriver ut information om kakor - finns det inga så skapas dem */

public function __construct() {

    if (isset($_COOKIE['time']) && isset($_COOKIE['name'])) {
        echo "Name of cookie: " . $_COOKIE['name'];
        echo "</br>";
        echo "Time of creeation: " . $_COOKIE['time'];
    } else {
        $this -> SetCookie();
    }
}

/* Funktion för att skapa cookies */

public function SetCookie() {
    $expire = time() + 60 * 60 * 3;
    $now = @date("Y-m-d H:i:s");
    setcookie('time', $now, $expire);
    $_COOKIE['time'] = $now;
    setcookie('name', "Cookie monster", $expire);
    $_COOKIE['name'] = "Cookie monster";
    }
}
$t = new cookie();
?>
<!DOCTYPE html>
<html>
<head>
    <title>Test</title>
</head>
<body>
    <? echo $t; ?>
</body>
</html>