PHP会话跨子域销毁 [英] PHP sessions destroy across sub domains

查看:104
本文介绍了PHP会话跨子域销毁的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这可能是此问题的后续:
跨子域的PHP会话



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

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

问题是当我尝试从 domain.com注销。我已经尝试了一切注销,甚至所有这些,如PHP session_destroy()手册中所建议的:

  //取消设置所有会话变量。 
$ _SESSION = array();

//如果希望终止会话,还要删除会话cookie。
//注意:这将会销毁会话,而不仅仅是会话数据!

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 时,会话仍然存在。



我如何做? p>

谢谢!

解决方案

你试图摧毁它吗?

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

这是我的环境中的工作代码。希望它有帮助。


This could be the sequel of this question: PHP Sessions across sub domains

I have a successful multi-domain session simply using this:

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

The problem is when I try to logout from domain.com. I have tried everything for logout, even all this, as suggested in PHP session_destroy() manual:

// 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"]
  );
}

But it's not working. The session is still alive when I visit subdomain.domain.com.

How can i do it?

Thank you!

解决方案

Did you see if the session is started before you try to destroy it?

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

This is working code from my environment. Hope it helps.

这篇关于PHP会话跨子域销毁的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆