我有一个简单的登录设置,我使用cookie存储登录ID#,并且可以显示此ID,用户名和其他信息。
因此,为了注销,我运行以下php脚本注销:
<?php
if (isset($_COOKIE['id'])) {
setcookie("id","",1);
}
header("Location: redirectpage.html");
exit;
?>
哪个基本上会使cookie过期。但是,当我到达重定向页面时,其中包含以下代码:
If (isset($_COOKIE['id'])) {
//display "You are logged in already"
} else {
// show login form
}
它说我仍然登录,并且移动到不同的页面仍然说我已登录,并且显示cookie值给了我一个实际值,这意味着cookie还没有过期。我必须在这里遗漏一些东西,但为什么cookie没有过期?
注意:我将过期日期从time() - 60或某个值更改为1,但这并没有改变任何内容,并且每次运行php代码时删除if语句只是使cookie过期仍然不会特技。
答案 0 :(得分:0)
尝试使用if(!empty($ _ COOKIE ...因为isset()认为要设置空字符串。请参阅此表:http://docs.php.net/manual/en/types.comparisons.php
答案 1 :(得分:0)
确保您尝试使用与创建cookie相同的参数删除Cookie。从php手册http://gr2.php.net/setcookie,在“常见陷阱”下:
必须使用与设置相同的参数删除Cookie 用。如果value参数是空字符串,或者为FALSE,则为all 其他参数匹配先前对setcookie的调用,然后是cookie 将从远程客户端删除具有指定名称的名称。这个 通过将值设置为“已删除”和到期来实现内部 过去一年的时间。