当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当前回答
这将在代码中取消设置cookie,但由于$_COOKIE变量在每个请求中都被刷新,因此它只会在下一次页面请求中返回。
要真正摆脱cookie,请将过期日期设置为过去:
// set the expiration date to one hour ago
setcookie("hello", "", time()-3600);
其他回答
很简单!
setcookie("cookiename", "cookievalue", 1);
我在代码中遇到了同样的问题,并发现这是一个cookie路径问题。查看这个堆栈溢出的帖子:不能删除php集cookie
我使用路径值“/”设置了cookie,但当我试图清除它时,它没有任何路径值,所以它没有清除。这里有一个有效的例子:
设置cookie:
$cookiePath = "/";
$cookieExpire = time()+(60*60*24);//one day -> seconds*minutes*hours
setcookie("CookieName",$cookieValue,$cookieExpire,$cookiePath);
清除cookie:
setcookie("cookieName","", time()-3600, $cookiePath);
unset ($_COOKIE['cookieName']);
希望这能有所帮助。
要可靠地删除cookie,仅将其设置为PHP服务器计算的过去任何时间过期是不够的。这是因为客户端计算机的时间可能而且经常与服务器的时间不同。
最好的做法是用一个空白的cookie覆盖当前的cookie,该cookie在epoch(1970年1月1日00:00:00 UTC)之后一秒过期,如下所示:
setcookie('hello', '', 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,您可以这样写:
foreach ($_COOKIE as $key => $value) {
unset($value);
setcookie($key, '', time() - 3600);
}