当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当前回答
很简单!
setcookie("cookiename", "cookievalue", 1);
其他回答
您可以根据cookie值设置会话变量
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");
一个干净的删除cookie的方法是清除$_COOKIE值和浏览器cookie文件:
if (isset($_COOKIE['key'])) {
unset($_COOKIE['key']);
setcookie('key', '', time() - 3600, '/'); // empty value and old timestamp
}
我知道这个主题已经创建了很长时间,但我在这个解决方案中发现了一个小错误(我可以这样称呼它,因为它是一个细节)。 我认为更好的解决方案可能是这样的:
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
return true;
} else {
return false;
}
但是,在目前的情况下,您删除了所有unset函数工作的情况下的cookie,并立即创建新的过期cookie,以防unset函数不起作用。
这意味着即使unset函数工作,它仍然会在计算机上有2个cookie。 从逻辑的角度来看,所要求的目标是删除cookie,如果可能的话,如果确实不可能,则使其过期;为了得到“最干净”的结果。
所以,我认为我们最好做的是:
if (isset($_COOKIE['remember_user'])) {
setcookie('Hello', null, -1, '/');
setcookie('HelloTest1', null, -1, '/');
unset($_COOKIE['Hello']);
unset($_COOKIE['HelloTest1']);
return true;
} else {
return false;
}
谢谢,祝您有愉快的一天。
如果您将cookie设置为过去过期时间,浏览器将删除它。参见setcookie() delete example at php.net
你必须删除cookie与php在你的服务器,也与js为您的浏览器..(他们是用php做的,但cookie文件也在浏览器客户端中):
一个例子:
if ($_GET['action'] == 'exit'){
// delete cookies with js and then in server with php:
echo '
<script type="text/javascript">
var delete_cookie = function(name) {
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:01 GMT;";
};
delete_cookie("madw");
delete_cookie("usdw");
</script>
';
unset($_COOKIE['cookie_name']);
unset($_COOKIE['cookie_time']);