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)。 后端/登录包括登录功能(并且该文件本身包括登录到数据库,然后是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()
函数home.php
试。