在PHP中销毁多域会话

时间:2011-01-27 00:10:41

标签: php session

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

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

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

此代码运行正常,如果我访问domain.com或subdomain.domain.com,我会看到SESSION vars没有问题,一切正常:)

问题是当我尝试从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"]
  );
}

1)session.use_cookies为ON,并在服务器中正确设置 2)该代码会杀死主域中的会话,但不会杀死subdomain.domain.com中的会话 3)$ params显示正确的信息:

Array
(
    [lifetime] => 0
    [path] => /
    [domain] => .domain.com
    [secure] => 
    [httponly] => 
)

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

请帮忙! :)

谢谢!

1 个答案:

答案 0 :(得分:3)

简单地使用session_destroy()来销毁会话。