2016-03-04 51 views
0

我在我的CakePHP 3應用程序中使用Database Sessions,因爲我希望顯示網站管理面板中的在線員工(用戶)列表。從cakephp 3會話表中提取數據

我想檢索登錄的員工(用戶)的會話信息(至少是用戶ID),以便他們的詳細信息可以顯示在列表中。 數據會話列表包含會話信息,但我不知道如何從中提取特定信息。我想要驗證碼來自它的信息。它包含以某種方式與會話密鑰串聯的序列化數據。

數據樣本

配置|一個:1:{S:4: 「時間」; I:1457067440;}閃光|一個:1:{S:4: 「AUTH」;一個:1:{i:0; a:4:{s:7:「message」; s:52:「Woopsie, 您無權訪問該 區域。」; s:3:「key」; s :4: 「AUTH」; S:7: 「元件」; S:13: 「閃光/默認」; S:6: 「PARAMS」;一個:1:{S:5: 「類」; S:5: 「error」;}}}} registrar_id | i:2; registrar_name | s:10:「Gaurav Makhecha」; unread_site_updates_ids | s:1:「1」;

任何人都可以請指導我如何才能實現這個最好的方式。

+0

你的意思是這樣的嗎? http://stackoverflow.com/questions/35450008/cakephp-3-display-logged-in-online-users-list/35451529#35451529(披露:我寫了答案) – Sevvlor

+3

會話數據由PHP序列化。嘗試使用[session_decode](http://php.net/manual/en/function.session-decode.php)來反序列化它。這就是說,在會話表中記錄並不意味着用戶實際上已登錄。他可能剛剛關閉了瀏覽器窗口,會話記錄不會被清除,直到垃圾收集運行。 – ADmad

+0

谷歌搜索也想出了https://gist.github.com/phred/1201412 – ADmad

回答

0

我不知道會話db是否是實現該功能的最佳位置。也許你可以使用別的東西...

只是想出大聲,也許登錄的用戶可以在每一個請求,更新某種標誌。 JS可以每X分鐘完成一次。這樣,您就可以過濾出「舊」標誌並顯示新的標誌,這些標誌當前應顯示活動用戶。

有可能有更好的方法來做到這一點,但我認爲使用會話數據庫不會是最好的方法。

+0

是的@Eber它不是獲取準確數據的最佳方式。我仍然在尋找一個更好的選擇,可以在不影響性能和資源使用的情況下提供理想的結果。 – Gaurav