2013-02-21 69 views
2

許多網站我創建了具有存儲在快速訪問會話的用戶數據。問題是,如果管理員選擇刪除或禁用用戶的帳戶,只要他們有會話cookie,他們仍然在技術上「登錄」。關閉會話當帳戶刪除

雖然有一些變通的解決方案,例如使用戶數據庫檢查他們作出任何更改之前或添加數據庫檢查到登錄驗證功能,這些都是比我想的效率較低。

所以我的問題是,是否有一種方法來存儲在上述會議從基於數據的另一用戶關閉會話的用戶,如用戶ID?如果沒有,那麼在沒有數據庫驗證的情況下,何時會認爲內部使用會話數據是不安全的?

我應該注意,這個問題是在假設我將使用內置的$ _SESSION變量而不是某種自定義數據庫實現的情況下提出的,因爲數據庫會話很容易追蹤。

我試圖避免使用一個數據庫,因爲保持在本地服務器上的會話數據要比添加我要訪問會話數據,每次連接到外部數據庫的等待時間更爲有效。

+0

你可以試試使用服務器代碼爲您提供所需的訪問權限,並允許服務器在會話和用戶標識之間建立鏈接。一旦你有了這些信息,服務器代碼應該可以幫助你做你所需要的。 – 2013-02-21 15:44:54

+1

你有沒有看過讓所有sesssions:http://stackoverflow.com/questions/1248008/session-list-in-php 以及如何殺死一個特定的會話: http://stackoverflow.com/questions/ 673/如何對破壞 - 一個特定的PHP會話 – 2013-02-21 15:50:33

+1

第一個環節似乎承擔使用內置的會議,而第二個假設一個基於數據庫的自定義會話設計。也許使用數據庫設計是理想的。每次只通過數據庫驗證數據庫會話是否有優勢? – Ecksters 2013-02-21 15:53:14

回答

1

嘗試使用以下實現你在找什麼:

+0

第一個鏈接幾乎是我所需要的(如何根據存儲在會話中的數據搜索會話ID),但第二個鏈接的答案是聲稱它必須使用自定義數據庫方法完成。另一個答案說使用'session_id($ sessionID);',這是你指的是什麼?因爲我認爲這可能會起作用..我只是不確定如何根據第一個鏈接獲取問題ID。 – Ecksters 2013-02-21 16:16:34

0

您可以在過程結束時使用session_destroy,但還:

爲了完全終止會話,想註銷用戶,會話ID也必須給予取消[和]然後會話cookie必須被刪除。

作爲一個備註:關於PHP文檔的一個'好東西'是你絕對喜歡,保證笑。

+0

你似乎誤解了這個問題。我試圖刪除執行刪除的用戶沒有Cookie的會話。換句話說,允許一個用戶刪除另一個用戶的會話。 – Ecksters 2013-02-21 15:46:21

+0

這給你一個這樣的答案。 – 2013-02-21 15:48:34

+0

如果我是管理員並刪除了用戶「Bob」,則使用session_destroy將刪除我的會話,而不是Bob計算機上的cookie允許訪問的會話。除非我錯過了一些東西,否則文檔不能回答我的問題。 – Ecksters 2013-02-21 15:50:25

1

你試過session_destroy

Session Destory

+0

「你似乎誤解了這個問題,我正在試圖刪除一個會話,用戶在執行刪除操作時沒有cookie,換句話說,允許一個用戶刪除另一個用戶的會話。」 – Ecksters 2013-02-21 15:46:57

0

不能在有人破壞會議別人他的電腦...。如果你真的想這樣做,你應該檢查每個頁面,如果該帳戶仍然可用..或其他一些解決方法..。

+0

當然,我無法刪除他們的cookies,但我應該能夠刪除我的服務器上他們的Cookie鏈接到的會話數據。 – Ecksters 2013-02-21 15:58:58