2013-12-20 298 views
4

嗨我正在我的網站上實現聊天/收件箱功能。當用戶未登錄並收到來自其他用戶的消息時,該網站將向該消息的收件人發送電子郵件。但是,當用戶登錄時不會。檢查用戶是否登錄laravel 4

我的問題是如何判斷用戶是否登錄?例如,如果用戶登錄然後關閉瀏覽器,我的後端將不知道任何內容。

順便說一句我正在Laravel 4建立一個Angularjs SPA與一個寧靜的API。?

+0

我認爲它更好的實現這在Angularjs中,而不是在PHP ...在PHP中,你可以做一些「愚蠢的」檢查,如用戶在線,如果他是在最後2分鐘極其活躍的 –

+0

我該怎麼做在angularjs?我的後端需要檢查用戶是否登錄,然後決定是否發送電子郵件 – user1424508

+0

聽有2 diffuses任務在你想做什麼... 1:找出用戶是否登錄或不(PHP) Auth :: check()).... 2:找出用戶是否在線或者沒有這個任務你需要使用angularjs例如websocket –

回答

4

我建議使用Ajax 數據庫時用戶已登錄。添加last_logged_in類型的列Date 因此,當用戶登錄時,它們會更新將他們的last_logged_in字段添加到當前日期。您可以隨心所欲地執行此Ajax(非常小的性能問題)。要查看用戶是否已登錄,只需檢查last_logged_in日期並將其與當前日期相比減去一段時間(1分鐘)即可。

我不會建議使用它來發送電子郵件用戶,因爲這可能會導致大量垃圾郵件。 此外,您還可以使用is_logged_in字段,但不要單獨使用它。

19

如果使用的是內置的Laravel驗證:

if(Auth::check()) 
{ 
    //do something 
} 

如果您使用的哨兵:

if(Sentry::check()) 
{ 
    //do something 
} 
+0

我不明白。如果用戶A是未登錄的消息用戶B,如何判斷用戶B是否已登錄?我認爲Auth :: check僅適用於當前用戶,即發送已登錄消息的用戶? – user1424508

+2

嗨,在這種情況下,你需要在你的用戶表中有一列。即'logged_in',如果用戶登錄設置它1.當他們註銷時,將其設置爲0. – Anam

+0

選中此列以檢查用戶是否登錄 – Anam