setcookie未设置以下代码

时间:2014-04-04 19:27:59

标签: php cookies

set cookie未设置以下代码的值。

<?php
    session_start();

    ob_start();
    unset($_SESSION['adminname']);
    session_destroy();
    if(isset($_COOKIE['adminremember_me'])) {
        $past = time() - 100;
        setcookie('adminremember_me', gone, $past);
    }

    header("Location: login.php");
    exit();
?>

虽然未显示错误消息,但Cookie不会因为setcookie donot正在删除。 有趣的是,我有另一个具有相同代码结构但具有不同cookie名称的文件,用于普通用户注销,并且该文件有效。

我将(htdocs / site / admin /)中的admin注销文件移动到(htdocs / site),现在注销工作了!认真做出了哪些改变?

1 个答案:

答案 0 :(得分:0)

您可以拥有多个具有相同名称但路径不同的Cookie。因此,如果脚本位于/folder1/folder2/mypage.php中,则可以使用路径/ folder1的1个cookie和路径/ folder1 / folder2的另一个cookie,并且两个cookie可以具有相同的名称。

我的猜测是你要删除的cookie属于不同的路径(默认情况下,如果你没有指定路径,那么它会假定脚本所在的文件夹)。要删除它,您必须手动设置path参数以匹配cookie的路径参数。例如:

setcookie('adminremember_me', gone, $past, "/");

setcookie('adminremember_me', gone, $past, "/folder1/");

要查看现有Cookie的路径,您需要使用浏览器的Cookie查看器查看其上设置的路径。

编辑:要回答编辑中的问题,当您移动注销文件的位置时,您将其移动到与cookie上设置的路径相同的文件夹中(因此默认值现在相同)。如果要将脚本移回旧位置,只需明确设置文件夹所在位置的路径