2017-07-07 130 views
0

我想讓每個用戶的lastonline時間,然後檢查現在時間減去他們上次在線時間是否小於600秒後他們上次登錄。PHP獲取所有用戶數據並檢查lastonline每個

我做了一些有用的代碼,但不是我想要的。 我想讓它獲得每個用戶的信息。出於某種原因,這段代碼非常確定地根據1個用戶更新每個用戶的信息。當我將我的代碼中小於號的符號更改爲大於號時,它們都會隨之更改 - 儘管我的用戶上次在線時間爲1分鐘前。

我的代碼:

<?php 
    $user_grab = mysqli_query($con, "SELECT * FROM users"); 
    while($users_ = mysqli_fetch_array($user_grab)) { 

     foreach($users as $user) { 
      $last_online = $users_['lastonline']; 

      if(time() - $last_online < user_session_timeout()) { 
       echo ' 
        <div class="chat-list-item -available" style="background: rgba(255,255,255,0.1);"> 
         <img class="chat-list-avatar" src="'.$users_['profile_picture'].'"/><i class="fa fa-circle chat-list-status"> </i> 
         <div class="chat-list-user">'.$users_['username'].'</div> 
         <div class="chat-list-excerpt">Online</div> 
        </div> 
       '; 
      } else { 
       echo ' 
        <div class="chat-list-item -offline" style="background: rgba(255,255,255,0.1); padding: 5px;"> 
         <img class="chat-list-avatar" src="'.$users_['profile_picture'].'"/><i class="fa fa-circle chat-list-status"> </i> 
         <div class="chat-list-user">'.$users_['username'].'</div> 
         <div class="chat-list-excerpt">Offline</div> 
        </div> 
       '; 
      } 
     } 
    } 
?> 

我user_session_timeout只是讀取用戶並沒有改變頁面,直到用戶應該被重定向

代碼user_session_timeout():

function user_session_timeout() { 
global $con; 
    $grab_user_timeout_sql = mysqli_query($con, "SELECT user_session_timeout FROM sitesettings"); 
    $row = mysqli_fetch_array($grab_user_timeout_sql); 
    return $row['user_session_timeout']; 
} 

圖片的時候我用戶全部離線顯示

證明,每一個用戶最後一次上線時間是不同的

+0

'user_session_timeout()'至少聽起來像是與當前用戶有關。它有什麼作用? – colburton

+0

@colburton我剛剛更新了我的問題。它只是從我的數據庫讀取600秒作爲整數。 – Benza

+0

您的'foreach'循環從不使用'$ user'做任何事情。你爲什麼在那裏循環? – Barmar

回答

2

$users_["lastonline"]是包含日期和時間的字符串。您需要將其解析爲數字時間戳,以便從time()中減去它。

$last_online = strtotime($users_['lastonline']); 
+0

非常感謝。它完美無瑕。 – Benza

相關問題