2017-07-07 13 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():

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']; 
} 

ピクチャーため

コードをリダイレクトする必要があるまで、私の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

関連する問題