2012-06-17 110 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