我认为可能会有一些关于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 ...
答案 0 :(得分:1)
http://php.net/manual/en/function.setcookie.php
我认为问题可能来自您创建Cookie的方式。您使用了null
$ path 而非/
,因此/pages
可能无法使用该Cookie,因此您的if (isset($_COOKIE['pseudocookie']))
条件失败/pages/logout.php
。
您可以通过回显if isset来验证这一点。