PHP会话跨子域销毁

时间:2011-01-23 01:10:41

标签: php session cookies

这可能是这个问题的续集: PHP Sessions across sub domains

我有一个成功的多域会话,只需使用它:

session_set_cookie_params(0, '/', '.domain.com');
session_start();

问题是当我尝试从domain.com注销时。我已按照PHP session_destroy()手册

中的建议尝试了注销,甚至所有这些操作
// Unset all of the session variables.
$_SESSION = array();

// If it's desired to kill the session, also delete the session cookie.
// Note: This will destroy the session, and not just the session data!

if (ini_get("session.use_cookies")) {
  $params = session_get_cookie_params();
  setcookie(session_name(), '', time() - 42000,
    $params["path"], $params["domain"],
    $params["secure"], $params["httponly"]
  );
}

但它不起作用。当我访问subdomain.domain.com时,会话仍然存在。

我该怎么做?

谢谢!

1 个答案:

答案 0 :(得分:0)

在尝试销毁会话之前,您是否看到会话已启动?

if (!isset($_SESSION)) session_start();
if (isset($_COOKIE['auth_token'])) {
remove_token($_COOKIE['auth_token']);
setcookie("auth_token", "", time()-3600, "/", ".domain.com");
}
session_destroy();

这是我环境中的工作代码。希望能帮助到你。