我想知道如何使用位于两个单独目录中的页面之间的会话传递内容。例如,如果我有以下代码,我需要添加什么才能使其正常工作?
第1页:目录\ directory1 \ directory2 \ Page1.php
session_start();
$_SESSION['example'] = '123';
第2页:目录\ dir1 \ dir2 \ Page2.php
session_start();
echo $_SESSION['example'];
答案 0 :(得分:1)
如果这些网页在同一个域内投放,则您的代码应该有用。
答案 1 :(得分:1)
您不必在每个页面中session_start()
。只需将其写入单个文件中,然后在要保存会话的页面之间共享该文件。
所以,如果你有page1.php
和page2.php
以及session.php
你可以在page1.php中创建会话,并在第二页检查它,如:echo var_dump($_SESSION)
和vise-反之亦然
答案 2 :(得分:1)
首先,检查是否正确设置了会话cookie。某些问题(例如已发送的标头)可能导致您的会话Cookie无法设置。
如果这项工作正常,您可能需要通过session_set_cookie_params
更改会话Cookie参数通过将第二个参数(路径)设置为/
,会话cookie对您网站的根目录和所有子目录都有效。
实施例
session_set_cookie_params(0, '/');
也可以在php.ini中或通过ini_set()
设置相同的设置。见Session configuration
注意:强>
如果启用了session.autostart
,我不确定这些设置是否有效,在这种情况下,可能已经在更改之前发送了cookie标头。