2013-12-10 88 views
1

誰能告訴我爲什麼這不起作用?在我的數據庫lastactive中是2013-12-10 16:15:12,每次用戶刷新我網站上的任何頁面時都會更新。PHP檢查用戶是否在線

我選擇它,並把它作爲一個變量:

$lastactive = $row[5]; 

此處,我認爲它應該工作,但是沒有。使用10秒進行測試。

if(time() > $lastactive+10){ 
    print('<div id="user_online_status" style="color: #aaa;">[OFFLINE]</div>'); 
} 
else if(time() < $lastactive+10){ 
    print('<div id="user_online_status">[ONLINE]</div>'); 
} 
+1

你正在選擇一個時間** STRING **,這意味着你正在測試'if(123456>'2013-12-10 hh:mm:ss')'...看那個一會兒,並試圖找出爲什麼它永遠不會工作。 –

回答

2

更換你選擇聲明來自:

SELECT lastOnline FROM user 

喜歡的東西......

SELECT UNIX_TIMESTAMP(lastOnline) FROM user 

這它。您當前正在根據UNIX時間戳檢查日期字符串。

+0

正是我需要的,謝謝! – user3010610

4

您正在比較unix時間戳與MySQL日期時間字符串。您需要將其轉換爲Unix時間戳兩相比較之前:

$lastactive = strtotime($row[5]); 
2

我沒有看到它的好主意來檢查時間。

如果用戶不刷新頁面,他會讓頁面打開並去吃東西? 。他會被註銷?這將是安永。

我想更好的方法是使用卸載

$(window).unload(function() { 
     // Send an Ajax request to logout.php 
}); 
1

如果用戶犯規刷新頁面,你可以使用cron的檢查它在服務器上。

$limit = $userOnline+60; // cron set to run every minute 

if($userOnline < $limit) 
    $userStatus = "offline"; 
else 
    $userStatus = "online";