2010-10-20 88 views
1

我有這個問題。我的網站是建立在一個用戶只有在登錄後才能進入會員的頁面。因此,每一頁都有此,PHP會話。管理員如何銷燬用戶的會話

如果(!$ _ SESSION [「用戶id」])頭的index.php

問題是,如果我禁止用戶和用戶沒有結束的會議上,他仍然會允許使用該網站,直到他結束會話並嘗試再次登錄,並且由於數據庫中狀態的更改,他將被拒絕。

我在想,唯一的辦法是刪除服務器中的物理會話文件,但我不知道如何。任何人?

回答

1

我所做的是在頭文件中創建一個數據庫查詢,該文件包含在每個頁面中,該頁面可以抽取用戶配置文件或檢查是否被禁用。如果是的話,我destroy their session

+0

問題應該是,如果用戶不改變頁面,他不停地發佈東西,它仍然會工作,順便說一句,我通過Ajax發佈,因此該頁面不刷新。 – john 2010-10-20 19:36:09

+0

@john你可以通過ajax發佈,但你的ajax仍然在調用一個.php頁面嗎? – Bot 2010-10-20 19:38:28

0

你需要做的是在你的ajax中添加用戶標識或其他信息以標識特定用戶發佈。這樣,您可以檢查服務器端是否允許用戶發佈每篇文章,並且如果不採取必要的措施。

0

除非你使用多級目錄中保存方法,這樣的事情很可能是不夠的:

unlink(ini_get('session.save_path') . 'sess_' . $bannedSessionID)); 

檢查您的服務器的會話文件有「sess_」前綴,雖然。它可能在某處被覆蓋。但在任何情況下,默認情況下,所有會話文件都位於單個目錄中(/ tmp,除非它們已被移動)並且可以由網絡服務器打開/讀取/寫入/刪除(因爲它們必須是)

+0

我如何知道哪個$ bannedSessionID禁止特定用戶 – john 2010-10-21 09:49:39

+0

您的登錄系統將不得不在某處存儲用戶的會話ID。或者如果您在會話文件(用戶名,全名等等)中存儲了可識別個人身份的內容,則可以查看所有會話文件以查找與該用戶關聯的文件。 – 2010-10-21 14:45:42