PHP:$_SESSION在函数执行后为空


PHP : $_SESSION empty after function execution

我开始主要用php开发一个平台,会话运行良好,直到一周后我停止了Apache服务器并开始使用它。

这是我的问题:

index.php

<?php
    include_once 'backend/login.php';   // DB connect + functions           
    include_once 'menu.php';            // menu include
    check_logout();                     // check if user logged out
?>      
<?php
    include_once 'widgets/widgets.php'; // widgets : login, agenda, events, languages
    include_once 'footer.php';          // footer
?>

因此,基本上这些是我页面的php部分(其余部分是HTML(。backend/login包括登录函数(该文件本身包括对DB的登录,然后是session_start(((。

home.php

<?php
        include_once 'backend/login.php';           // connect to DB, login functions
        include_once 'backend/load_feed.php';       // feed functions           
        include_once 'menu.php';                    // include main menu
        ?>
        <script>
            alert("<?php echo $_SESSION['first_name']; ?>");
        </script>
        <?php           
        check_login();                              // ensure user is logged in
    ?>

当index.php上的登录(表单隐藏在widgets/widgets.php中(有效时。它将window.location更改为home.php。问题是$_SESSION不包含登录期间存储的信息。

dbconnect.php

<?php
/*
remote script used to conenct to the database
*/
$servername = "localhost";
$username = "root";
$password = "root";
$dbname = "DB";
// create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// check connection
if($conn->connect_error){
    die("Connection failed : " . $conn->connect_error);
}
session_start();
?>

这是用于连接数据库的脚本,它运行正常(我能够验证用户凭据的有效性(

补充信息:
-我已经验证了登录时存储的所有信息都存储在$_SESSION中。(信息存在于函数的范围内(
-所有需要$_SESSION的文件都包含(直接或通过其他包含(dbconnect.php文件,因此可以访问$_SESSION
-调用session_start((之前不会生成任何输出

有人知道我问题的根源是什么吗?

<?php
    session_start();
    include_once 'backend/login.php';
    include_once 'menu.php';
    check_logout();
    include_once 'widgets/widgets.php';
    include_once 'footer.php'
?>

试试这个!

我希望这是有效的&还有一件事,上面包含的文件列表请确保你没有在该文件中再次调用session_start((,实际上这并不重要,但还是要尝试一下。

同样,正如你所说的,函数出现了问题,也请发布错误的快照,这样我就更有助于理解错误。

我认为你应该首先根据这个调用session_start((,但我不太确定

您需要在home.php的开头调用session_start()函数,然后重试。

您可以尝试添加sesion_start();在包含文件之前位于文档顶部。