我正在使用cakephp 2並最近將會話處理程序更改爲數據庫。 似乎一切正常,除非用戶離開網站時未註銷會話保持活動狀態。當用戶離開網站時銷燬數據庫會話
在我core.php中的文件我已經配置數據庫會話處理程序如下:
Configure::write('Session', array(
'defaults' => 'database'
));
如何配置CakePHP的數據庫會話銷燬當用戶離開而不退出該網站的會議?
TIA!
我正在使用cakephp 2並最近將會話處理程序更改爲數據庫。 似乎一切正常,除非用戶離開網站時未註銷會話保持活動狀態。當用戶離開網站時銷燬數據庫會話
在我core.php中的文件我已經配置數據庫會話處理程序如下:
Configure::write('Session', array(
'defaults' => 'database'
));
如何配置CakePHP的數據庫會話銷燬當用戶離開而不退出該網站的會議?
TIA!
你不能。 PHP按需運行,不可能知道用戶什麼時候停止瀏覽網站。您基本上有2個選項:
會話存儲在服務器上,因此如果瀏覽器關閉或用戶轉到其他頁面,則沒有義務告知服務器此操作。
會話在服務器中存儲一段時間,並在一段時間不活動後自動銷燬。在CakePHP cookbook
檢查會話信息瞭解更多詳情
您可以使用HTML5的本地存儲數據庫功能。 – 2013-04-08 17:56:07
@ColeJohnson你的意思是處理cakephp會話?儘管如此,這將取決於瀏覽器對該功能的支持,對吧? – pollirrata 2013-04-08 17:57:44
有一個可能的解決方案,在某些情況下工作,但可能不是一個很好的解決方案:
<body onUnload="ajaxFunctionToDeleteSession();">
some random stuff goes here
</body>
所以ajaxFunctionToDeleteSession
將通過Ajax調用一會刪除會話的網址。
本,我看到幾個問題:
但是,如果您絕對必須在有人離開網站時刪除會話,這可能會提供一種方法開始接近問題。
即使您仍然登錄到應用程序中,也會在您導航到其他頁面時調用onUnload,因此,當您不希望它發生時,它會終止會話... – pollirrata 2013-04-09 18:10:09
好的,謝謝你的答案。這種吸引力因爲擁有數據庫會話有一些好處 – 2013-04-08 18:15:41