php setcookie 在 php5 下失败

标签 php setcookie

我创建了这个简单的脚本,它将设置一个具有三个值的 cookie,或者检索已设置的 cookie 值。在我运行 PHP4 的服务器上,一切正常。在我的 PHP 5 (5.2.11) 服务器上,脚本无法在浏览器中设置 cookie。我已经检查了我的 php.ini 中是否启用了输出缓冲,它是。有没有人知道为什么这不起作用?

<?php 
echo "<!DOCTYPE html>";
echo "<body>";
if (!isset($_COOKIE['taeinv'])) {
    echo "No cookie set...   Attempting to set a new cookie.";
    $user = "testuser";
    $role = "admin";
    $expire = "true";
    $halfHour = 1800;
    setcookie("websitename[Expire]", $expire, time()+$halfHour);
    setcookie("websitename[User]", $user, time()+$halfHour);
    setcookie("websitename[Role]", $role, time()+$halfHour);
}
if (isset($_COOKIE['websitename'])) {
    echo "Cookie Values:";
    echo "<br />";
        foreach ($_COOKIE['websitename'] as $name => $value) {
            echo "<b>$name</b> : $value <br />\n";
        }
}
echo "<br />";
echo "<a href=logout.php>Logout</a>";
echo "</body>";
echo "</html>";
?>

最佳答案

您必须在向浏览器输出任何内容之前设置 cookie。尝试将所有 echo 行移动到 setcookie 调用下方的某处。你可以这样做:

<?php
$set = false;
if (!isset($_COOKIE['taeinv'])) {
    $set = true;
    $user = "testuser";
    $role = "admin";
    $expire = "true";
    $halfHour = 1800;
    setcookie("websitename[Expire]", $expire, time()+$halfHour);
    setcookie("websitename[User]", $user, time()+$halfHour);
    setcookie("websitename[Role]", $role, time()+$halfHour);

}
echo "<!DOCTYPE html>";
echo "<body>";
if ($set) {
    echo "No cookie set...   Attempted to set a new cookie.";
}
if (isset($_COOKIE['websitename'])) {
    echo "Cookie Values:";
    echo "<br />";
        foreach ($_COOKIE['websitename'] as $name => $value) {
            echo "<b>$name</b> : $value <br />\n";
        }
}
echo "<br />";
echo "<a href=logout.php>Logout</a>";
echo "</body>";
echo "</html>";
?>

关于php setcookie 在 php5 下失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2224278/

相关文章:

php - Yii2 多对多与 self - 通过 GridView 过滤(没有属性?)

php设置cookie问题

php - cookie 值中的逗号在 ZF2 中被双重解析

cookies - 从包括Google Analytics(分析)主域在内的子域设置Cookie

php - codeigniter - 在 View 中检索 Controller 变量(使用 $this)

php - MYSQL数据限制数

php - 如何在zend框架中设置cookie?

php - 简单的 PHP Cookie

php - 如何通过 php (Linux) 获取系统接口(interface)的 MAC 地址

php - MySQL 选择(Zend Framework 数据库选择)