PHP会话跨子域销毁 [英] PHP sessions destroy across sub domains
问题描述
这可能是此问题的后续:
跨子域的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屋!