PHP:在标题重定向之前,会话未保存

php*_*utt 11 php session header sessionid

我已经通过php手册阅读了这个问题,这似乎是一个很常见的问题,但我还没有找到解决方案.我在数据库中保存会话.我的代码如下:

// session
$_SESSION['userID'] = $user->id;        
header('Location: /subdirectory/index.php');
Run Code Online (Sandbox Code Playgroud)

然后在index.php的顶部session_start(),我有var_dumped $ _SESSION全局,而userID不在那里.正如我所说,我看了PHP手册(http://php.net/manual/en/function.session-write-close.php)并没有session_write_closesession_regenerate_id(true)为我工作.有人知道解决方案吗?

编辑:我的文件顶部有session_start().当我在头重定向之前var_dump会话全局时,我在那里看到userID,但是在另一个文件中没有,这是在这个脚本的子目录中

小智 14

我知道这是一个古老的缺点,但我找到了解决方案(对我而言).我在标题后面放了一个出口.

$_SESSION['session'] = 'this is a session';
header('location: apage.php');
exit;
Run Code Online (Sandbox Code Playgroud)

这适合我


ahm*_*106 0

你有 session_start(); 吗?在顶端?

未经测试,但你不能做这样的事情:

session_start();
$_SESSION['userID'] = $user->id;
if( $_SESSION['userID'] == $user->id )
{  
    header('Location: /index.php');
}
Run Code Online (Sandbox Code Playgroud)

我以前从未遇到过这个问题,有趣