2013-12-10 88 views
2

我有一個$ _SESSION var,當用戶登錄時,它存儲簡單,容易調用的標識信息。即使用戶未登錄,它也會記錄訪問的最後一個文件(如果用戶登錄,快速返回到該頁面)。在在PHP中傳遞會話數據

$_SESSION[$userid,$username,$first_name,$lastPage]; 

用戶

已登錄用戶沒有登錄

$_SESSION[$lastPage]; 

我的主要關注的是安全和易於理解爲未來的程序員。

那麼,這些選項中的任何一個是否可行?還是我錯過了一個更安全的選項,並且程序員非常容易理解?

  1. 使用$ _SESSION var,並在類中進行訪問。
  2. 使用sessionWrapper類來模擬$ _SESSION中的值。
  3. 只保留一個唯一的標識符,並且可能在$ _SESSION var中保留lastPage。創建一個sessionWrapper類,如果給出此唯一標識符,則從數據庫中提取相關信息。

我在這裏錯過了什麼嗎?在我寫這篇文章時,我更接近於選項3,但非常感謝有關此處最佳實踐的任何反饋。

+1

這是一個數組,你需要使用'$ _SESSION ['variable'] = ...'。 –

+4

'$ _SESSION ['loggedIn'] = true'?對會話安全感到好奇?堅果https://www.owasp.org/index.php/Session_Management_Cheat_Sheet。 PHP的具體https://www.owasp.org/index.php/PHP_Security_Cheat_Sheet#Authentication_and_Session_Management_Cheat_Sheet –

+0

謝謝@MarcelKorpel - 我現在有一個工作的SESSION結構。不知道如何建立會話,我只是把它們放在一起,以更好地解釋現在它們中的內容。如果你有更好的方式在這裏(象徵性地)直觀地表示它們,我將進行編輯。 – smcjones

回答

1

您是否想過使用cookie作爲last_page信息?我假設你不必將所有內容都保存在$_SESSION之內。好吧,現在是肉丸。如果安全是一個問題,那麼$_SESSION是好的,但不是最好的。這個問題可以歸結爲:

  • 多少安全,你需要
  • 多少錢你願意的事情爲下一代複雜的維護者

高安全性: PHP會話保存到服務器上的可訪問文件默認情況下,你可以通過在你的應用程序中有一個很好的封裝數據庫來緩解這一點。只要它是一個非常簡單的封裝類,那麼你就很好。您的選件3是一個很好的解決方案。

低安全性:如果你不願意放下KLOCs爲您的個人$_SESSION實現,我想你可以保存相關信息安全的,因爲你擁有了它,現在,選擇不太重要的信息的cookie:last_page是一些與用戶相關但不能識別的東西,因此請將它們分開。

  • 選項1對小proyects
  • 選項2大型proyects(我用這個方法有一些方便和簡單的包裝類)

從我的角度來看你是不是丟失任何東西,你只需要做出決定並堅持下去

+0

有用的答案,謝謝!我想我會選擇2. – smcjones

+0

當然,我敢打賭你已經有了一個想法,但如果你需要更多的幫助,請隨時問 – hanzo2001