2012-03-06 62 views
2

我想知道我是否可以確定某人的會話是否已經結束,以及如果我能做些什麼,如果有的話。PHP在會話被破壞時做些什麼

例如,如果會話已將球員狀態設置爲脫機。

+1

你的意思是,如果你破壞了會話?或者,如果用戶停止訪問您的網站? – Brad 2012-03-06 22:14:28

+0

您是否在使用應用程序框架(例如,Symfony,CodeIgniter,Cake等)? – 2012-03-06 22:15:30

+0

好吧,我想我的網站訪問我的網站。所以,如果他們關閉瀏覽器等效果 – 2012-03-06 22:15:40

回答

1

如果用戶沒有向服務器發出請求,除非使用數據庫系統,否則無法可靠地知道他們的會話何時結束。例如,你有一個會話表:

session_id | user_id | session_start_time 

每當你加載一個頁面,你看看session_start_time是否足夠老,可以刪除。例如:

if (($data['session_start_time'] + USER_SESSION_TTL) < time()) { 
    // delete row 
} 

USER_SESSION_TTL是該用戶的會話保持活着,如果他是不活動的時間。

現在,如果用戶沒有與他關聯的會話,則可以安全地假定他處於離線狀態。我概括了一下,但它可以應用於很多系統。

希望這會有幫助

+0

謝謝,但這部分是什麼意思。 USER_SESSION_TTL – 2012-03-06 22:20:23

+0

我爲該部分添加了說明。它基本上是用戶會話保持活躍的時間(以秒爲單位),如果他沒有訪問您的網站(不活躍)。 – vanneto 2012-03-06 22:21:24