2012-03-18 274 views
0

所以我有一個登錄php文件,在它檢查用戶名和密碼是否正確後,它會重定向到主頁面。關鍵是我想記住它是哪個用戶,所以這只是他的會話。PHP登錄會話創建

該日誌部分:所以現在

if(mysql_num_rows($result) > 0) 
{ 
    session_start(); 
    $_SESSION['username'] = $username; 
    $_SESSION['password'] = $password; 
    header('Location: ../Main_page/main_page.php'); 
} 

主頁上使用:

<?php 

$user = $_SESSION['username']; 
?> 

和我而如果我想例如輸出用戶名,我想以後使用例如:

<dt>Welcome, <em><?php echo $_SESSION['username']?></em></dt> 

但它不工作... 請幫我找錯誤在此代碼

+0

您是否總是在腳本的開頭調用'session_start()'? – evotopid 2012-03-18 20:32:18

+3

在會話中輸入明文密碼絕對沒有正當理由。 – bkconrad 2012-03-18 20:37:18

+3

不要將密碼放在會話變量中! – Shackrock 2012-03-18 20:38:50

回答

2

請致電session_start()在您的每個腳本的首行,並始終檢查變量是否設置爲授權/調試目的。這樣

if(isset($_SESSION['username'])){ 

//welcome user 
    } 
else 
{ 
    //sorry, you need to log in 
} 

東西請確保您還設置error_reporting(E_ALL)ini_set("display_errors", 1);之前你把session_start()腳本的頂部。此建議是爲了響應您的「請幫我在此代碼中找到錯誤」

+0

它工作得很好,直到我表示將該部分添加到我的網站的其他部分。之後,它不會識別它是同一個會話並要求再次登錄... – 2012-03-18 22:23:49

+0

您是否已將上述內容添加到每個腳本的頂部? if條件可以在你喜歡的任何地方,但'session_start()'應該在頂部 – jmishra 2012-03-18 22:28:47

+0

是的。當我登錄時,我轉到主頁面,但是如果我嘗試從那裏重定向到任何其他頁面,則表明我需要登錄。我使用此代碼<?php session_start(); if(!isset($ _ SESSION ['username'])) die(「

您需要登錄才能查看此頁面)」; – 2012-03-19 12:14:36

0

在將任何輸出或標題發送到瀏覽器之前,將session_start()放在所有頁面的頂部。