簡體   English   中英

使用或不使用session_set_save_handler?

[英]To use, or not to use, session_set_save_handler?

我正在玩PHP創建用戶登錄系統。

我一直在研究這篇文章( http://www.evolt.org/node/60384 ),以此來解決這個問題。

在上面的文章中,作者使用$ _SESSION和他自己的自定義數據庫表的組合來存儲用戶信息。

然而...

我還遇到過許多文章,建議使用session_set_save_handler配置php會話以本機使用數據庫。 (我猜這是一種新技術。)

我想知道:如果我打算在數據庫中設置一個“activeUsers”表來記錄會話數據,那么使用session_set_save_handler會更有意義嗎? (似乎我是否正在使用數據庫存儲一些會話信息,我不妨放棄文件系統會話。)

或者將php會話保留為默認文件系統形式,然后根據我的自定義數據庫表進行x檢查用戶登錄是否有一些優勢?

在此先感謝您的幫助。

將會話數據存儲在數據庫中起初設置起來可能有點棘手,但是一旦設置了類或功能,那么與文件系統存儲相比,您可以獲得一些潛在的優勢。 問題是您的系統是否需要這些優勢。 我認為,這些是在數據庫中存儲會話數據的最常見原因:

安全性:如果使用共享主機,則會話數據可以保存在磁盤的其他用戶可訪問的區域中。 這可能會對您的應用程序構成安全風險。

可伸縮性:如果您的應用程序由多個服務器(例如服務器場)處理,則需要確保來自同一客戶端的多個請求(可能由不同服務器處理)各自接收相同的會話數據。這是相當的如果會話數據在數據庫中,則很容易做到。

性能:數據庫存儲可能會提高文件系統存儲的性能,但這很大程度上受到服務器配置的影響。

數據庫交互:根據會話數據的角色以及應用程序如何使用它,如果會話數據和相關信息都在數據庫中,則可能更容易檢索它們。

還需要考慮的是,您可以通過存儲其他信息來增強會話信息,例如IP地址,登錄和注銷時間等。 在嘗試阻止會話劫持時,此類信息非常有用。

因此,除了可擴展性問題之外,我認為這些都是非常主觀的。 您需要加權實現數據庫會話存儲所需的額外工作,並帶來可能的好處。

如果您使用它,您需要制作自己的垃圾收集器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM