当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当我想要删除Cookie时,我会尝试
unset($_COOKIE['hello']);
我在firefox的cookie浏览器中看到cookie仍然存在。我怎么才能真正去掉饼干呢?
当前回答
你必须删除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']);
其他回答
请参阅PHP文档中标记为“示例#2 setcookie() delete Example”的示例。要清除浏览器中的cookie,您需要告诉浏览器该cookie已经过期……然后浏览器将删除它。unset只是从cookie数组中移除'hello' cookie。
当您为时间输入0时,您的意思是“现在”(从现在开始+0实际上是现在),浏览器会删除cookie。
setcookie("key", NULL, 0, "/");
我在chrome浏览器中检查了它,给我:
Name: key
Content: Deleted
Created: Sunday, November 18, 2018 at 2:33:14 PM
Expires: Sunday, November 18, 2018 at 2:33:14 PM
$cookie_name = "my cookie";
$cookie_value = "my value";
$cookie_new_value = "my new value";
// Create a cookie,
setcookie($cookie_name, $cookie_value , time() + (86400 * 30), "/"); //86400 = 24 hours in seconds
// Get value in a cookie,
$cookie_value = $_COOKIE[$cookie_name];
// Update a cookie,
setcookie($cookie_name, $cookie_new_value , time() + (86400 * 30), "/");
// Delete a cookie,
setcookie($cookie_name, '' , time() - 3600, "/"); // time() - 3600 means, set the cookie expiration date to the past hour.
只要将过期日期设置为一小时前,如果你想“删除”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
要删除cookie,你只需要将值设置为NULL:
“如果您为cookie设置了过期时间、路径或域的非默认值,则在删除cookie时必须再次提供这些相同的值,以便正确删除cookie。” 引自《学习PHP5》一书。
所以这段代码应该工作(为我工作):
设置cookie: Setcookie ('foo', 'bar', time() + 60 * 5);
删除cookie: setcookie(“foo”,时间()+ 60 * 5);
但是我注意到每个人都将过期日期设置为过期,这有必要吗?为什么?