如何将SESSION变量传递到父目录中的页面?

Rom*_*man 1 php subdomain session

在我的网站上,我想拥有几个子域。为给定子域创建上下文的文件存储在相应的子目录中。

有时我需要链接到不属于该子域的文件。

例如,在我的“ subdomain1.mysite.org”上,我具有“ www.mysite.org/login.php”的链接。“ login.php”存储在目录中,该目录包含与子域相对应的所有子目录。

如果我以这种方式创建指向“ www.mysite.org/login.php”的链接:href='../login.php',它将无法正常工作。因为浏览器尝试访问“ subdomain1.mysite.org/../login.php”。为了解决这个问题,我以这种方式建立了链接:href='http://www.mysite.org/login.php'但是我认为这种方式无法将我的会话变量传递给新页面(是这样吗?)。

因此,我的问题是我找不到将会话变量传递到位于父目录中的页面(或传递到另一个域上的页面)的方法。有人知道如何解决这个问题吗?

添加

按照建议,我很疲倦地使用它session_set_cookie_params来解决问题。但是我仍然无法获得预期的结果。更详细地讲,我执行以下操作:

我在使用以下代码index.php生成内容的文件中subdomain1.mysite.org

session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
$_SESSION['page'] = $PHP_SELF;
Run Code Online (Sandbox Code Playgroud)

后来,在同一个文件中,我链接到了我的页面之一(我认为问题可能出在这里)。我通过以下方式创建链接:

href='http://www.mysite.org/login.php'
Run Code Online (Sandbox Code Playgroud)

在login.php文件中,我有以下代码:

session_set_cookie_params(24*60*60,'/','.mysite.org');
session_start();
print "a".$_SESSION['page']."b";
Run Code Online (Sandbox Code Playgroud)

结果,“ a”和“ b”之间没有任何关系。因此,我仍然无法将会话变量从一页传递到另一页。有人知道我在做什么错吗?

添加2 我必须说,如果添加以下行,我的问题就解决了: session_name("some_name");

之前

session_set_cookie_params

Cfr*_*eak 5

在PHP INI中,您可以将会话域设置为“ .mysite.org”,然后就应该能够在多个域之间共享会话。相关变量为:

session.cookie_domain

您也可以使用session_set_cookie_params()函数在脚本中设置它。

编辑 -我应该注意,仅当您的子域在同一服务器上(看起来像它们)时,此方法才有效。