2011-10-27 83 views
0

這是基本的PHP和我是一個新手。PHP基本會話使用

這裏是我的代碼上的第一個文件:

session_start(); 
$_SESSION['username'] = $username; 
$_SESSION['password'] = $password; 

header('Location: cms.php'); 

這裏的另一個文件的另一個:

if (session_id() == '') { 
    header('Location: login.php'); 
} 

基本上,我的第一個代碼創建一個會話。我在接下來要做的是確定一個會話是否被創建,如果不是,它將被重定向到登錄頁面。這裏的問題是,根本沒有創建任何會話,這是我想,因爲我試圖顯示session_id(),它沒有顯示任何東西。

那麼現在我錯過了什麼?我猜這跟header()功能有關。但是,儘管如此,我需要幫助,並會非常感謝一些解釋和更好的代碼。

非常感謝!

+0

你需要'在session_start();'在每其中使用會話頁面。 – xdazz

+0

謝謝。我現在明白了。 – Turtel

回答

2

一個更好的代碼:

session_start(); 
if (empty($_SESSION['username'])) { 
    header('Location: login.php'); 
    exit; 
} 
+0

這是實現這一目標的正確方法。只是想添加一個解釋:正如php手冊php.net中指定的那樣,「session_start()創建會話或基於通過GET或POST請求傳遞的會話標識符恢復當前會話,或通過cookie傳遞」您必須致電session_start()在訪問$ _SESSION或session_id()之前。 – davur