我正在创建登录页面,由于某种原因,会话将不会在我设置它的位置和我转发到的页面之间保持不变。我可以在会话初始化的页面中注释掉标题,并看到会话中包含数据。但是,当我在目标页面中执行print_r时,会话为空。
我已经确定调用了session_start。此站点只有一个域,我的浏览器设置为接受cookie。我可以转发到任何其他页面并查看会话数据,但不是这个。
是否有人可以提供帮助调试?
$_SESSION['auth'] = $auth;
header( "Location: /" ); // commenting this out shows the data is in fact there
我想保护索引页面,以便测试是否设置了session ['auth']。如果没有,我转发到/ user / login,允许用户登录。如果成功,我们将返回到索引页面,应通过isset会话测试。它虽然失败,但没有会话数据。
答案 0 :(得分:1)
set.php:
session_start();
$_SESSION['auth'] = true;
header('Location: /');
的index.php:
session_start();
var_dump($_SESSION);
创建这两个文件并请求set.php。你看到了什么?
答案 1 :(得分:0)
如果设置会话变量,然后执行标题重定向,则需要在重定向之前添加session_write_close(),否则将丢失sesson修改。
答案 2 :(得分:0)
我跑了很多东西,意外地从带有'www'的页面重定向。在没有的页面的URL中。我不确定为什么会发生这种情况,但由于某种原因,网站之间的会话在有和没有'www。'的情况下是不同的。