我一直在尝试在两个子域之间维护会话变量,但发现这是不可能的。最终我创建了两个最小化的PHP网页作为测试平台,其中一个我称之为"测试1"只设置了
这段文字描述了一个测试过程,其中有一个超链接指向“test 2”,它会尝试回显$_SESSION['test']的值以证明是否成功。作者将“test 1”放在主域名下,而“test 2”则放在子域名下。作者从不同的来源中尝试了多个版本的头信息,以下是最主要的三个(当然还有它们的变种):
我发现在每种情况下都得到了相同的结果。会话未跨子域传递,页面测试 2 不知道我将 $_SESSION['test'] 设置为什么值。然而,网络上似乎对上述方法中的其中一种应该起作用有足够的确定性。你有什么想法,特别是因为我正在使用最小的页面来测试机制(我看不到任何副作用)?顺便说一下,我在共享服务器上,如果这里有相关的内容。
$_SESSION['test'] = "Fred";
这段文字描述了一个测试过程,其中有一个超链接指向“test 2”,它会尝试回显$_SESSION['test']的值以证明是否成功。作者将“test 1”放在主域名下,而“test 2”则放在子域名下。作者从不同的来源中尝试了多个版本的头信息,以下是最主要的三个(当然还有它们的变种):
ini_set('session.cookie_domain',substr($_SERVER['SERVER_NAME'],strpos($_SERVER['SERVER_NAME'],"."),100));
session_start();
或者
ini_set('session.cookie_domain','mydomain.com');
session_start();
或者
ini_set('session.cookie_domain', PHP_INI_ALL);
session_start();
或者
session_set_cookie_params(0, "/", ".mydomain.com", false);
session_start();
我发现在每种情况下都得到了相同的结果。会话未跨子域传递,页面测试 2 不知道我将 $_SESSION['test'] 设置为什么值。然而,网络上似乎对上述方法中的其中一种应该起作用有足够的确定性。你有什么想法,特别是因为我正在使用最小的页面来测试机制(我看不到任何副作用)?顺便说一下,我在共享服务器上,如果这里有相关的内容。
谢谢你的想法。弗兰克。
编辑。 我修复了它。问题是由 Suhosin 引起的。请参见本页底部的详细答案。