Php 删除Cookie时出现问题,赢得';不能取消
我曾尝试在php手册和互联网上搜索如何删除Cookie,我尝试的方式与他们说的完全相同:Php 删除Cookie时出现问题,赢得';不能取消,php,cookies,unset,Php,Cookies,Unset,我曾尝试在php手册和互联网上搜索如何删除Cookie,我尝试的方式与他们说的完全相同: setcookie("name", '', 1); 或 但是当我在Firefox的cookies对话框中检查cookies时,它仍然是相同的值。 我使用以下行设置此cookie: setcookie("name", $value, time() + 259200, $path); 我发现有关stackoverflow的问题: ,但没有一个答案解决了问题。我也试着像作者所说的那样,加入所有的参数,但没有效
setcookie("name", '', 1);
或
但是当我在Firefox的cookies对话框中检查cookies时,它仍然是相同的值。
我使用以下行设置此cookie:
setcookie("name", $value, time() + 259200, $path);
我发现有关stackoverflow的问题:
,但没有一个答案解决了问题。我也试着像作者所说的那样,加入所有的参数,但没有效果
有人看到这个问题了吗?您是否尝试过将时间设置为一个较小的值,并为cookie使用一个值
setcookie("name", 'n', 1);
我试着用
setcookie("name", "", -1);
在我使用Apache/PHP5的服务器上,它清除了cookie(至少有一个var_dump($_cookie)显示了一个空数组)。您是否检查了脚本是否已经发送了它的HTTP头
if (headers_sent()) {
trigger_error("Cant change cookies", E_USER_NOTICE);
}
但我也有十分之一的机会。我想这是我们编码方式的问题 这是我的密码
setcookie("token", "", time() - 36000, "/");
:
删除cookie时必须使用与设置cookie时相同的参数。如果value参数是空字符串,或FALSE
,并且所有其他参数与之前对setcookie的调用相匹配,则将从远程客户端删除具有指定名称的cookie。这是通过将值设置为“已删除”并将过期时间设置为过去一年在内部实现的
因此,也要确保正确指定了$path
,删除它时也是如此。例如,如果cookie是在子目录中指定的,则您可能无法从父目录或子目录(或两者)中删除它
我不完全确定权限是如何工作的,但您可能希望使用Web Developer工具栏查看您试图删除的cookie的路径。好的,我真的不明白,但它现在可以工作了。神奇的密码是:
setcookie("name", '', 1, $path);
我不是已经试过了吗??!不管怎样,它现在起作用了。谢谢大家的帮助 我建议使用
ob_start();
起初,我也有类似的问题
我发现,无论出于何种原因,在logout.php中回显某些内容实际上会删除cookie:
echo '{}';
setcookie('username', '', time()-3600, '/');
我很惊讶还没有人发布这篇文章,但这篇文章非常适合我: 按名称创建或更改cookie:
$_COOKIE['myCookieName'] = 'I can be changed to whatever u want';
按名称删除cookie:
unset($_COOKIE['myCookieName']);
有时,您将cookie保存在不同的路径中,而不是尝试在其中删除/使用它 进入例如Chrome cookie设置并检查cookie路径,然后将该路径添加到setcookie命令,并按如下方式删除它:
setcookie( "my_cookie_name","",1,'/mypath');
尝试删除或取消设置保存在错误路径中的cookie将不起作用,可能会非常令人沮丧。只需在global.php等全局核心函数文件中定义一个自定义函数即可
function delete_cookie()
{
unset($_COOKIE['cookiename']);
setcookie('cookiename',NULL,time()-3600, '/');
return true;
}
并在html代码顶部使用此函数,如
include('global.php')
if(isset($_GET['delete_cookie']))
{
delete_cookie(); //if you want to pass the parameters into the function also possible like delete_cookie(param1);
}
如果您删除特定路径的cookie,并且您的path参数以尾随斜杠“/”结尾,那么它将在Firefox和IE中工作,但在Chrome和Opera中不工作。如果没有尾部斜杠,那么它只能在Chrome和Opera中使用 因此,您应该同时使用:
setcookie('cookiename', '', time() - 60*60*24, $chatPath); // WebKit
setcookie('cookiename', '', time() - 60*60*24, $chatPath . '/'); // Gecko, IE
设置cookie setcookie('cookiename',$cookie_值,time()+(86400*30),“/”; //86400=1天 取消设置cookie setcookie('cookiename','',time()-3600,“/”
不必惊慌。只需复制用于设置cookie的函数,现在减去时间。不要搞混了,让它变得简单明了。这为我带来了窍门:
setcookie("brownie","",1,'/');
unset($_COOKIE["brownie"]);
我很惊讶没有人提到它(或者我错过了),但是域也很重要!如果您在sub-domain.example.com上,并且cookie来自.example.com,那么您需要显式设置domain参数,否则它将假定为当前域,并且无法工作
setcookie('cookiename', FALSE, -1, '/', '.example.com');
子域值将不会清除父域中的cookie。正如正确答案中所说的(我希望它发送一个更新的),要取消设置,用于设置cookie的每个参数都是必需的,即使是安全和httponly
var remember = $.cookie('auto_login');
if (remember == 'true') {
var username = $.cookie('username');
var password = $.cookie('password');
$('#username').val(username);
$('#password').val(password);
}
$('#logsub').click(function (event) {
if ($('#auto_login').is(':checked')) {
var username = $('#username').val();
var password = $('#password').val();
// set cookies to expire in 14 days
$.cookie('username', username, {expires: 14});
$.cookie('password', password, {expires: 14});
$.cookie('auto_login', true, {expires: 14});
} else {
// reset cookies
$.cookie('username', null);
$.cookie('password', null);
$.cookie('auto_login', null);
}
});
设置
取消
这是我对cookie的经验,在浏览器窗口(我们用来查看现有cookie)关闭之前,cookie可能不会从客户机上删除。因此,请关闭该窗口并尝试您的代码
- 删除创建中存在的参数时,所有参数都必须存在
- 时间一定是过去了
- 值必须为“”(空)
- 文件夹路径在创建时必须相同
var remember = $.cookie('auto_login');
if (remember == 'true') {
var username = $.cookie('username');
var password = $.cookie('password');
$('#username').val(username);
$('#password').val(password);
}
$('#logsub').click(function (event) {
if ($('#auto_login').is(':checked')) {
var username = $('#username').val();
var password = $('#password').val();
// set cookies to expire in 14 days
$.cookie('username', username, {expires: 14});
$.cookie('password', password, {expires: 14});
$.cookie('auto_login', true, {expires: 14});
} else {
// reset cookies
$.cookie('username', null);
$.cookie('password', null);
$.cookie('auto_login', null);
}
});
setcookie("name_cookie", $name_value, 0, '/', $domain, false, true);
setcookie("name_cookie", '', time()-1000, '/', $domain, false, true);