当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当前回答
我知道这个主题已经创建了很长时间,但我在这个解决方案中发现了一个小错误(我可以这样称呼它,因为它是一个细节)。 我认为更好的解决方案可能是这样的:
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,仅将其设置为PHP服务器计算的过去任何时间过期是不够的。这是因为客户端计算机的时间可能而且经常与服务器的时间不同。
最好的做法是用一个空白的cookie覆盖当前的cookie,该cookie在epoch(1970年1月1日00:00:00 UTC)之后一秒过期,如下所示:
setcookie('hello', '', 1);
请参阅PHP文档中标记为“示例#2 setcookie() delete Example”的示例。要清除浏览器中的cookie,您需要告诉浏览器该cookie已经过期……然后浏览器将删除它。unset只是从cookie数组中移除'hello' cookie。
我在php中使用这个,它工作得很好。
function cookie_unset()
{
setcookie("cookie_name", "", time() - 3600, '/');
unset ($_COOKIE['cookie_name']);
//done
}
我知道这个主题已经创建了很长时间,但我在这个解决方案中发现了一个小错误(我可以这样称呼它,因为它是一个细节)。 我认为更好的解决方案可能是这样的:
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值设置会话变量
session_start();
if(isset($_COOKIE['loggedin']) && ($_COOKIE['loggedin'] == "true") ){
$_SESSION['loggedin'] = "true";
}
echo ($_SESSION['loggedin'] == "true" ? "You are logged in" : "Please Login to continue");