2012-07-09 43 views
2

我正在創建一個要在iPad上使用的網絡應用程序。一個重要的功能是用戶一次只能在一臺設備上登錄。如果用戶登錄,我已經通過將數據庫中的字段從0更新爲1來實現此目的。iPad上的Safari中的用戶超時

但是,在用戶忘記註銷的情況下具有超時功能也很重要。我嘗試在PHP中執行此操作,但它不合適,因爲在腳本運行以將用戶註銷之前必須刷新頁面。

然後我試着用JavaScript做一個客戶端(30分鐘後簡單的頁面重定向),但我剛剛瞭解到,如果您在iPad上最小化Safari,所有運行腳本都會停止,以便用戶輕鬆點擊主頁屏幕沒有註銷並且超時將不起作用。

Sooo ...我出來的想法...有沒有辦法在iPad上的Safari超時人?

+1

當用戶離開時,通常無法以100%的準確率進行檢測;特別是如果您將會話數據存儲在數據庫中,則需要編寫一個定期運行的腳本(即cronjob)並檢查會話是否已過期。 – Mahn 2012-07-09 12:19:48

回答

3

使用您的服務器CRONJOB功能http://en.wikipedia.org/wiki/Cron併爲DB寬註銷檢查寫一個腳本。通過這種方式,您可以完全接受用戶客戶端的問題,您所要做的就是使用時間戳監視用戶操作,您將在後面檢查腳本。

例如,如果您的用戶表last_action_time中有字段,那麼每次重新加載站點或執行任何其他操作時都要更新該字段。只需將time()存儲到該字段即可。對於cronjob腳本,只需檢查所有使用last_action_time < time() - (60 * 30)的用戶,並將其字段從1更新爲0(如果是這種情況)。

+3

+1。不要相信客戶。只要確保你在每次迴應開始時都進行安全檢查。如果登錄超時,您可以將後續請求重定向到身份驗證屏幕。 – 2012-07-09 12:39:23

相關問題