2012-11-25 270 views
0

我有一個登錄腳本,我已經能夠成功地讓用戶,並登錄。現在我的問題是,每當我嘗試使用我的方法來保護網頁,看到如果有'用戶'的會話,如果沒有,它會指引你回到登錄頁面。PHP - 登錄腳本不創建會話

下面是我檢查的會議,

require("common.php"); 


if(empty($_SESSION['user'])) 
{ 

    header("Location: login"); 

    die("Redirecting to login"); 
} 

這裏是我設置我的會議,我只是設置在session_start();在login.php中

if($login_ok) 
    { 

     unset($row['salt']); 
     unset($row['password']); 

     $_SESSION['user'] = $row; 

     header("Location: home?worked=1"); 
     die("Redirecting to: home?worked=1"); 
     session_start(); 
    } 
    else 
    { 
     print("Login Failed."); 
     $submitted_username = htmlentities($_POST['username'], ENT_QUOTES, 'UTF-8'); 
    } 
} 

這個做什麼,是我登錄時,它會處理並把我帶到我的主頁,然後處理頭回到登錄頁面充當如果我沒有登錄。我測試了一個虛假登錄,它告訴它它的登錄名是正確的。

謝謝你的幫助,我把頭髮拉出來!

死靈

EDIT

我移動在session_start();到我common.php的頂端,一切都很完美。

回答

1

你有session_start();之後$_SESSION['user'] = $row; 其實你在die();命令後有它。之後沒有任何反應。

session_start();放在每個頁面的PHP頂部(pref common.php,因爲你有一個)而不只是一個頁面。

+0

Woops。我誤解了你的評論。這工作!非常感謝。我仍然習慣於放置在PHP中......它太挑剔了! –

+0

它需要在每一頁上。我編輯了我的答案 – Popnoodles

+0

不挑剔,合乎邏輯。 – Popnoodles

1

這將是最好設置在頂部

1

session_start()你需要把在session_start();在您想要使用會話的每個頁面上。