销毁不在子目录中工作的cookie

时间:2015-08-13 23:53:55

标签: php cookies destroy

我认为可能会有一些关于cookie的问题。当我点击一个按钮但是cookie仍然存在时,我正试图销毁一个cookie。我知道cookie的说明必须在html代码之前,所以我创建了一个没有HTML代码的新php页面,logout.php:

<?php

if (isset($_COOKIE['pseudocookie'])) {
    setcookie('pseudocookie', '', time()-300); 
}

if(session_id() == '') {
    session_start(); 
}

session_destroy();
session_unset();

header('Location: ../index.php'); ?>

我正在使用一个简单的按钮从index.php调用页面:

<input type="button" id="ButSignout" value="Sign out" onclick="window.location.href='pages/logout.php'" />

我做了一些测试,php页面加载很好,如果我尝试直接从index.php中删除cookie,它就可以了。我错过了什么?提前谢谢。

Cookie的创建时间为:

setcookie('pseudocookie','Pseudo cookie',time()+$expire, null, null, false, true);

当我在没有标题的logout.php中尝试此代码时,我可以看到打印的cookie的新值。

if (isset($_COOKIE['pseudocookie'])) {
    //setcookie('pseudocookie', '', time()-300); 

    echo "test";
    setcookie('pseudocookie','Cookie cookie',time()+3600);
    echo $_COOKIE['pseudocookie'];
    unset($_COOKIE['pseudocookie']);
}

但是当我回到打印cookie的index.php时,它显示了他的先前值。似乎当重新加载index.php时,cookie会自动获取其先前的值,尽管index.php代码中没有setcookie ...

1 个答案:

答案 0 :(得分:1)

http://php.net/manual/en/function.setcookie.php

我认为问题可能来自您创建Cookie的方式。您使用了null $ path 而非/,因此/pages可能无法使用该Cookie,因此您的if (isset($_COOKIE['pseudocookie']))条件失败/pages/logout.php

您可以通过回显if isset来验证这一点。