2014-01-14 52 views
1

忍受我,而我解釋這一點。所以我有我的login.php,它在用戶登錄時將用戶重定向到一個新頁面,並由login_functions.inc.php處理。我有我的index.php這是我登錄之前的主頁。我有我的loggedin.inc.php,它顯示了登錄時的導航和標題信息,並允許您瀏覽您無法訪問的頁面你已註銷。並且我有我的loggedout.inc.php,它顯示登錄表單,當您未登錄時可訪問的頁面。PHP - 遇到我的登錄系統問題

問題是,當您登錄時,我希望loggedin.inc.php顯示所有頁面在我的網站上,包括那些在註銷時也顯示loggedout.inc.php文件的文件。 loggedin.inc.php和loggedout.inc.php基本上是兩個不同的header.inc.php文件。它們顯示取決於您是否登錄或註銷網站。

現在我已經有了這個工作之前,但一路上它打破了,我無法弄清楚如何解決它。以下是創建此過程的代碼片段。我註冊時唯一設置的頁面是主頁。根據您是否登錄並註銷,應該可以使用loggedin.inc.php頭文件和loggedout.inc.php頭文件來查看。我正在使用會話來跟蹤您的用戶名信息數據庫中的user_id。

的index.php

<?php 
if (isset($_SESSION['user_id'])) { 

$page_title = 'You can now browse around the entire website!'; 
include ('loggedin.inc.php'); 

} else { 

$page_title = 'Please log in to view the rest of the website!'; 
include ('loggedout.inc.php'); 

} 
?> 

此代碼之前的工作,但顯然這不是現在的工作。當你登錄時,你的user_id被設置在一個可從數據庫中分離出來的會話中,並且可以通過網站上的每個頁面。除此之外,我的登錄系統的其他每個進程都可以工作。

當我登錄並瀏覽我的網站時,它會繼續使用所有頁面的loggedin.inc.php文件,除非當我導航到index.php時,它會顯示loggedout.inc.php文件,我甚至可以手動鍵入登錄頁面的url,並且會再次顯示loggedin.inc.php文件。這不是會話變量是否被設置的問題,因爲它肯定會保持設置。

+0

我想你有'session_start();'隱藏在某個地方? (*他們總是留下那提及*) –

+0

對不起,我試圖讓我的代碼顯示大聲笑,仍然是新的stackoverflow ..是的,因爲要麼每個頁面loggedin.inc.php或loggedout.inc.php顯示session_start();行在這兩個文件的最頂端被使用。 – Egahtrac

+0

代碼「S-T-I-T-C-H」是什麼?你原來的問題很好。 –

回答

0

您還必須包括session_start();會話是否存在(或設置與否),因爲你包括單詞$_SESSIONif (isset($_SESSION['user_id']))

因此您的代碼將類似於:

<?php 
session_start(); 
if (isset($_SESSION['user_id'])) { 

$page_title = 'You can now browse around the entire website!'; 
include ('loggedin.inc.php'); 

} else { 

$page_title = 'Please log in to view the rest of the website!'; 
include ('loggedout.inc.php'); 

} 
?>