会话和包含的页面

时间:2012-06-17 14:39:38

标签: php session include

我的会话似乎没有保存。我有一个登录页面,将用户ID保存为会话。但是当我离开页面并点击另一页时,会话就不会被保存。

这是我的代码。我有一个名为 index .php的主页,如下所示:

<?php
if(!isset($_SESSION)){
       session_start();
}
?>

<!DOCTYPE html> <HTML> <HEAD> </HEAD> <BODY>

<?php
$page_content = 'startpage.php';

if (isset($_GET['link']) && !empty($_GET['link']) ) {
    $page_content = $_GET['link'];
}

include "$page_content";
include 'menu.php'; 
include 'footer.php';  
?>

要登录,我使用名为 admin.php 的页面。在这个页面中,我有一个工作正常的登录代码。 如果用户写了正确的用户名和密码,则会发生这种情况:

$_SESSION['user_id'] = $user_id;            
print_r($_SESSION);

上面的代码显示了当前的会话变量。但是,只要点击另一页,变量就会变空。

在index.php的底部是包含的 footer.php 页面,它看起来像这样:

<?php
if(!isset($_SESSION['user_id']) ){        
    echo "The sessions are not initiated. ";        
} 

if (empty ($_SESSION['user_id']) ) {
    echo "The sessions are empty. ";
}

echo "<a href='index.php?link=admin.php'>Administration</a>";
?>

在这个页脚中,我提出了两个问题来检查会话。 在我成功登录并单击另一页后,如果问题检测到我的会话为空且未启动。

我应该如何让会议发挥作用?

也许我应该补充一点,我使用的是使用MySql的租用数据库。

1 个答案:

答案 0 :(得分:1)

在使用$_SESSION之前,您应该始终使用:

session_start()

此外,在您在页面上输出任何内容之前,必须始终调用session_start(),否则它将无法正常工作