我不能用PHP删除cookie

时间:2015-09-02 16:27:03

标签: php cookies

我无法用我的PHP代码删除cookie。当我按logout时,页面会刷新但Cookie仍然存在。

<?php
if (isset($_COOKIE["admin_login"])) {
    echo "Cookie: ".$_COOKIE["admin_login"]."<br>";
}
if (isset($_GET["logout"])) {
    setcookie("admin_login", "", time()-3600);
    unset($_COOKIE['admin_login']);

}
?>
<html>
<body>
    <a href="?logout">Logout</a>
</body>
</html>

2 个答案:

答案 0 :(得分:1)

这可能是因为您在设置cookie之前输出数据。

  

setcookie()定义了一个与其他HTTP头一起发送的cookie。与其他标头一样,Cookie必须在脚本的任何输出之前发送(这是协议限制)。

if (isset($_COOKIE["admin_login"]))
    anything_that_doesnt_output_text(); // text was causing problem most likely.

if (isset($_GET["logout"]))
    setcookie("admin_login", "", time()-3600); // also, no unsetting

答案 1 :(得分:0)

感谢您的回答。在找不到解决方案后,我试图切换到SESSION。

经过一些研究,我认为它很有效。谢谢大家的帮助。

如果有人有兴趣,这是我的最终代码。

<?php
session_start();
if (isset($_GET["logout"])) {
    session_unset(); 
    session_destroy(); 
    header("Location: ../login.php");    
}
if (isset($_SESSION["admin_login_session"])) {
    echo "Cookie: ".$_SESSION["admin_login_session"]."<br>";
} else {
    header("Location: ../login.php");
}

?>
<html>
<body>
    <a href="?logout">Logout</a>
</body>
</html>