我想知道如何使用位于两个单独目录中的页面之间的会话来传递某些东西。例如,如果我有以下代码,我需要添加什么才能使其工作?
第 1 页:目录\directory1\directory2\Page1.php
session_start();
$_SESSION['example'] = '123';
第2页:目录\dir1\dir2\Page2.php
session_start();
echo $_SESSION['example'];
首先,检查会话cookie 是否设置正确。某些问题(例如已发送的标头)可能会导致您的会话 cookie 未设置。
如果这工作正常,您可能需要通过session_set_cookie_params更改会话 cookie 参数
通过将第二个参数(路径)设置为/
,会话 cookie 对您网站的根目录和所有子目录有效。
例子
session_set_cookie_params(0, '/');
相同的设置也可以在您的 php.ini 或通过ini_set()
. 请参阅会话配置
笔记:
我不确定如果session.autostart
启用这些设置是否有任何影响,在这种情况下,cookie-header 可能在进行更改之前已经发送。
如果这些页面在同一个域中提供,您的代码应该可以工作。
您不必session_start()
在每个页面中。只需将其写在一个文件中,然后在要进行会话的页面之间共享该文件。
因此,如果您有page1.php
并且您可以在 page1.php 中创建会话并在第二页中检查它,例如page2.php
:反之亦然session.php
echo var_dump($_SESSION)