2011-10-25 88 views
1

我有一個系統,要求用戶登錄(或註冊)一個帳戶,然後才能訪問其成員儀表板。何時開始會話?

我的問題是......在什麼時候,所以我session_start()?在登錄頁面和註冊頁面上?或者在用戶成功認證後?

謝謝。

+1

請注意,創建您自己的身份驗證系統非常非常棘手。除非你有大量的經驗,或者一直在研究這個主題,否則你可能會遇到一些漏洞。 – outis

+0

請注意,如果用戶瀏覽器禁用了cookie,session_start()將在每次調用時創建一個新的會話ID,如果要支持這些用戶,則會話管理會變得棘手且易受攻擊。 –

回答

9

您需要在每個想要訪問會話數據的頁面上包含session_start()。並且在任何其他輸出完成之前需要調用它。

1

在需要訪問會話數據的頁面上啓動會話。作爲成功登錄的一部分,您還應該撥打session_regenerate_id以防止會話固定。

0

一旦用戶通過身份驗證,您就可以啓動會話。 之後,您可以在S_SESSION中使用用戶相關的信息並從任何地方訪問此信息。

1

由於黑爾格Helwig說,

你需要在每個頁面的頂部添加session_start()。 但是,爲了使這更容易,您可以創建一個PHP文檔,其中 您存儲所有這樣的重要代碼,並調用它;說init.php。

然後你可以在每個頁面的頂部include 'init.php',這將 清理了一下代碼。

0

您應該在驗證用戶信息後開始會話,並且可以將用戶的uid設置爲會話變量。這可能在加載用戶的個人信息如個人資料,偏好等後很有用。

在註冊頁面我認爲你不需要開始會話。

問候

0

session_start()將被要求每一個網頁是安全和被認證後訪問。您將在登錄頁面和註冊頁面中將這些值放入會話中,因爲它們會對用戶進行身份驗證。但是一旦用戶被驗證,現在你必須把這個功能放在需要用戶認證的所有頁面上。