2016-02-18 70 views
1

我正在創建一個登錄系統。我在數據庫中進行active_session表是這樣的:Php在數據庫中管理每個用戶的多個會話

| id | user_id |session_key|others...| 
| 12 | 6548 |kdjgs939493|.........| 

我創建具有有限的生命時間(如1小時天等),一個餅乾。當我手動註銷時,它會銷燬cookie並從數據庫中刪除會話記錄。問題是,如果有人登錄並且不註銷,那麼cookies將在其到期後過期,但我如何從數據庫中刪除這些會話。因爲如果這些記錄沒有被刪除,那麼數據庫中會有很多無用的會話記錄

+0

session_start(); session_unset(); session_destroy(); –

+0

我知道這些,但這些都不會從數據庫中自動刪除記錄 –

回答

0

解決方案1:您可以添加一條命令來刪除執行登錄的同一腳本中的舊條目。這樣,你可以確保每次登錄後都不會有舊的記錄。

解決方案2:您可以製作一個定期執行的腳本,檢查數據庫中較舊的記錄並刪除它們。這樣,你可以使用一個特定的mysql用戶來爲這個腳本刪除記錄。

+0

都是正確的,我在session表中添加了expirydate列,其默認值是當前時間+(會話到期時間或其他),並將此查詢包含在登錄腳本:'$ deloldsession = $ con> query(「DELETE FROM active_sessions where expirytime

1

當會話啓動或應該結束時,您將不得不存儲時間戳。然後,您可以運行計劃任務並刪除不再需要的所有條目。