2012-06-17 77 views
0

我的会话似乎并未保存。我有一个登录页面,将用户ID保存为会话。但是,当我离开页面并单击其他页面时,会话不会被保存。会话和包含页面

这是我的代码。我有一个名为指数 .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的租用数据库。

+0

哪里都将不能正常工作,你的的在session_start()? – Drewdin

+0

这是在我的主页:index.php。不知何故,这在我的问题中是不可见的。 – Olof84

回答

1

之前,你可以使用$_SESSION你应该总是以它:

session_start() 

此外,session_start()必须始终在页面上你输出任何东西之前调用,否则

+0

卢克是对的。还记得把session_start();在任何其他页面顶部之前。没有其他代码,没有HTML,没有空格。 –

+0

是的,我在我的index.php顶部有session_start()。 如果我想将session_start()放在包含的页面的顶部,就像在admin.php中一样,它不会出现在我的输出文本之前,因为它是一个包含页面。我尝试过一次,但它表示不是在输出文本之前。 – Olof84

+0

对不起,我的session_start()代码在我的问题中由于某种原因不可见。我编辑过,所以你可以看到我在顶部写了session_start()。 – Olof84