PHP$\头重定向后会话为空

PHP$\头重定向后会话为空,php,session,redirect,header,Php,Session,Redirect,Header,执行头重定向时,$\u会话中的数据丢失。当我使用调试器处理这个问题时,我可以在退出()之前在$_会话中看到我的所有数据 Login.php: 然后我在下面的session_start()条件后面放置了一个断点,$\u session完全为空 myaccount.php: 确保您正在使用函数session_start()

执行头重定向时,$\u会话中的数据丢失。当我使用调试器处理这个问题时,我可以在退出()之前在$_会话中看到我的所有数据

Login.php:

然后我在下面的session_start()条件后面放置了一个断点,$\u session完全为空

myaccount.php:


确保您正在使用函数
session_start()myaccount.php

上的if语句之前,应该在访问(即读或写)的每个页面上调用
session\u start()
,并在访问会话数组之前调用它。因此,请确保在两个页面上都调用了
会话\u start()

是,不要删除帖子。。。我也有同样的问题,这篇帖子让我不由自主地用手掌狠狠地拍了拍前额。它解决了这个问题(用我的代码,而不是我的愚蠢)。干杯

这就是问题所在。我在每个页面上都使用这个条件,这样我就不会多次尝试调用session_start()。会话中始终有一个用户id,以便测试正常运行。。只要我打对了。它实际上是“用户ID”。愚蠢的错误。有没有办法删除这篇毫无价值的帖子?@sing1ejack:不要删除帖子,它可能对面临同样问题的人有用。我很高兴看到你的帖子,但我认为这比忘记会话_start();要复杂一些:D在我的例子中,它在头重定向后也不起作用,但每次我想使用$_会话变量时,我都会调用session_start(),在一个文件中设置一个($_session['message']='blahblah';),当重定向到另一个头为()的文件时,$_会话数组为空。我还将会话的保存路径重定向到另一个目录,在该目录中,我可以通过文本编辑器看到“blahblah”消息。。。
...

if($result == 1){       
    header("Location: /myaccount.php");
    session_write_close();
    exit();
} else {
    header("Location: /login.php?invalid=yes");
    exit();
} 
<?php
if(!isset($_SESSION['user_id'])) { session_start(); }

$docRoot = getenv("DOCUMENT_ROOT");
...