当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当前回答
我发现在Chrome浏览器中,除非你在cookie中定义最后三个参数,否则不可能取消设置cookie。域名,它是安全的,只有http…
if (isset($_COOKIE['user_id'])) {
unset($_COOKIE['user_id']);
setcookie("user_id", "", time() - 3600, "/", 'yourdomain.com',true,true);
header('Location: /');
} else {
/* other code here */
}
我就是这样让它为我工作的。 阅读文档:官方PHP站点中关于cookie的所有内容
其他回答
要可靠地删除cookie,仅将其设置为PHP服务器计算的过去任何时间过期是不够的。这是因为客户端计算机的时间可能而且经常与服务器的时间不同。
最好的做法是用一个空白的cookie覆盖当前的cookie,该cookie在epoch(1970年1月1日00:00:00 UTC)之后一秒过期,如下所示:
setcookie('hello', '', 1);
你可以试试这个
if (isset($_COOKIE['remember_user'])) {
unset($_COOKIE['remember_user']);
setcookie('remember_user', null, -1, '/');
return true;
} else {
return false;
}
如果你想从你当前的所有域中完全删除cookie,那么下面的代码一定会帮助你。
unset($_COOKIE['hello']);
setcookie("hello", "", time() - 300,"/");
这段代码将删除cookie变量完全从所有的域,即;" / " -它表示cookie变量的值为所有域设置,而不仅仅是当前域或路径。Time() - 300表示它设置为以前的时间,因此它将过期。
这就是它被完美删除的方式。
只要将过期日期设置为一小时前,如果你想“删除”cookie,就像这样:
setcookie ("TestCookie", "", time() - 3600);
or
setcookie ("TestCookie", "", time() - 3600, "/~rasmus/", "example.com", 1);
来源:http://www.php.net/manual/en/function.setcookie.php
你应该使用filter_input()函数来处理访问者可以输入/操作的所有全局变量,如下所示:
$visitors_ip = filter_input(INPUT_COOKIE, 'id');
你可以在这里阅读更多:http://www.php.net/manual/en/function.filter-input.php和这里:http://www.w3schools.com/php/func_filter_input.asp
这是如何PHP v7 setcookie()代码工作时,你这样做:
<?php
setcookie('user_id','');
setcookie('session','');
?>
从tcpdump在端口80上嗅探时的输出,服务器向客户端(浏览器)发送以下HTTP报头:
Set-Cookie: user_id=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
Set-Cookie: session=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; Max-Age=0
观察以下请求中的数据包,浏览器不再在报头中发送这些cookie