Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP会话跨子域销毁_Php_Session_Cookies - Fatal编程技术网

PHP会话跨子域销毁

PHP会话跨子域销毁,php,session,cookies,Php,Session,Cookies,这可能是这个问题的续集: 我通过以下方式成功地完成了多域会话: session_set_cookie_params(0, '/', '.domain.com'); session_start(); 问题是当我试图从domain.com注销时。我尝试了所有注销的方法,甚至所有这些方法,正如PHPsession\u destroy()manual中所建议的: // Unset all of the session variables. $_SESSION = array(); // If it

这可能是这个问题的续集:

我通过以下方式成功地完成了多域会话:

session_set_cookie_params(0, '/', '.domain.com');
session_start();
问题是当我试图从
domain.com
注销时。我尝试了所有注销的方法,甚至所有这些方法,正如PHP
session\u 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"]
  );
}
但它不起作用。当我访问
subdomain.domain.com
时,会话仍处于活动状态

我怎么做


谢谢大家!

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

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

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

session\u destroy()
不起作用吗?您是从同一域名、根域名(如
example.com
、sans子域)还是从“www”子域设置cookie?在会话中使用标志表示有效性并将
$\u session[“valid”]=false
$params
中有什么?可以显示转储吗?1)会话_destroy不工作,因为会话是用“setcookie”命令销毁的;2) 首先在domain.com的“父域”中设置会话;3) 马里奥,我不明白你的意思;4) 在参数中显示“/”作为路径,.domain.com作为域,没有任何线索:P