【发布时间】:2012-08-08 02:09:58
【问题描述】:
我有一个简单的登录设置,我使用 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,但这并没有改变任何内容,并且删除 if 语句以在每次 php 代码运行时使 cookie 过期仍然没有执行把戏。
【问题讨论】:
-
您不能直接删除 cookie。您在过去设置了过期日期并将其留给浏览器将其删除。看看这个:stackoverflow.com/questions/1267341/delete-cookie-from-browser
-
@ZombieHunter,
setcookie将 unix 时间戳作为第三个参数。值 1 是过去。 -
你的cookie中有什么?如果我在我的计算机中创建一个新的 cookie 并将其设置为
id=1,我会自动登录到您的网站吗?第 1 课:永远永远信任用户提供的数据,包括$_GET、$_POST、$_REQUEST、$_COOKIE以及$_FILES和$_SERVER['HTTP_*']的一些值 -
卡洛斯,我的登录方式不是这样,id是11位数字,如果数字无效,它不会让你登录
-
ZombieHunter,你是对的,我的意思是过期,所以浏览器无法再访问该值。 1,根据我的研究,意味着它被设置为 1970 年开始后的一秒,过去的日期
标签: php session-cookies