PHP:函数执行后$ _SESSION为空

时间:2016-09-24 10:13:10

标签: php session

我开始主要在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)。后端/登录包括登录功能(该文件本身包括登录到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();

之前没有生成输出

有人知道可能是我问题的根源吗?

4 个答案:

答案 0 :(得分:1)

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

试试这个!

我希望这适用于&amp;也做一件事,你上面包含的文件列表请确保你还没有在那些文件中再次调用session_start(),实际上它并不重要,但还是试一试。

另外正如您所说的那样,该功能会产生问题,请同时发布错误的快照,这样我就可以更好地理解错误。

答案 1 :(得分:0)

我认为你应该先根据this调用session_start(),但我不太确定

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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