为什么我的饼干不会消失? **更新**

时间:2013-01-21 15:21:19

标签: php cookies

我正在设置一个auth cookie:

$identifier = $this->createIdentifier($username);
$key = md5(uniqid(rand(), true));
$timeout = time() + 60 * 60 * 24 * 100;

setcookie('auth', "$identifier:$key", $timeout);

注销后我试图通过这样做来使它失效:

setcookie('auth', "", time() - 3600);

当我在注销后尝试查看受限页面时,我正在检查cookie是否存在:

if (isset($_COOKIE['auth'])) {
error_log("COOKIE EXISTS: " . print_r($_COOKIE, true));
}

这是我的退出脚本:

if (!isset($_SESSION)) session_start();

$ref="index.php";

if (isset($_SESSION['username'])) {
unset($_SESSION['username']);   

session_unset();
session_destroy();

// remove the auth cookie
setcookie('auth', "", time() - 3600);

}

header("Location: " . $ref);
exit();

我不应该打这个代码,但我是。注销后,我看到cookie已从我的浏览器中删除。知道如何在退出后再次找到它吗?

更新 从另一个检查用户权限等的类调用此代码。它不能使用的唯一文件是从上面的一个目录引用它的文件。例如

任何引用它的文件都可以正常工作:

<?php include_once('classes/check.class.php'); 

任何引用它的文件都不会起作用:

<?php include_once('../classes/check.class.php'); 

有什么想法会导致这种情况吗?

1 个答案:

答案 0 :(得分:2)

将用户注销后,您需要执行重定向以导致新页面加载。由于cookie是随页面请求一起发送的,直到发出新请求,即使您“删除”它们,这些cookie仍然存在。