2010-02-18 62 views
1

我有多個Web應用程序(PHP),這些應用程序正在通過各自的域服務於不同的客戶。每個域名顯然都有單獨的Cookie和會話(域和路徑都設置正確)。我是否需要針對不同網站的不同會話表?

我是否需要在數據庫中爲每個網站設置完全獨立的會話表以嘗試確保唯一的會話?我猜我不需要,因爲如果我們使用的是文件支持的會話,那麼每個服務器都使用相同的會話存儲。所以我猜測用DB-store我可以重新使用表格。

這只是與會話代碼(我使用ADODB),我看不到任何代碼來處理創建會話期間會話ID衝突。

+0

將所有會話合併到一個表格後面的想法是使創建新網站變得更容易。如果管理員不需要爲每個網站創建新的會話表,那麼這會讓他的生活更輕鬆。 – brofield

回答

0

您可以修改會話ID以包含一個簡短網站前綴。只需在創建會話之前修改您的創建會話即可調用session_id($ new_id)。

這也將允許您列出每個網站搜索前綴的所有當前會話。更好的解決方案是將會話密鑰分成兩個字段,通過前綴和唯一密鑰索引,前綴索引。您需要修改會話創建功能才能實現此功能。

您甚至可以通過此前綴進行驗證並拒絕會話(如果綁定到其他網站以提高安全性)。

否則,如果您的會話ID已正確生成,您不應該遇到碰撞問題。

+0

不是答案,但足夠接近。我沒有嘗試過,但設置會話ID前綴可能工作。它需要session_id($ prefix.session_id())之類的東西,並根據php.net頁面來做,這也會導致session cookies問題。 我認爲最後一句話是最重要的。 – brofield

1

但它不會導致您的應用程序出現任何問題,但是,出於安全考慮,我會使用不同的表格,除非整合所有會話是您網站某些功能的一部分。

我還沒有做過,但我真的不認爲會有任何問題。

相關問題