我有一段很好的代码,显示有多少用户在线使用名为“online_users”的表格中的会话。
我正在使用AJAX将我的数据返回到我的家庭PHP页面(这很有效;我只需要检查每个在线客户端的方法是否已更改)。
Here is a picture of my current styling using the first code method below
Here is a picture of my 'Online_users' table in my database
我需要使用此代码的相同方法来检查每个用户的在线时间。
目前,它仅计算有多少用户在线。
我还要检查另一段代码,但它的运行方式与第二种方法(获取在线用户数的方法)的运行方式不同。如果计时器已通过,则显示脱机。我需要使它的工作方式与count online users方法(下面的代码中的方法2)相同,因此它会检查我的数据库中的会话。
我需要通过检查表'online_users'中的会话来使每个用户检查以相同的方式进行检查。
我的第一个代码(工作但在一段时间后更改为离线,而不是检查会话是否仍处于活动状态):
//First, define our client_is_online so we don't throw errors in the while loop
$client_is_online = "";
//Get online users individually and echo if they're online or not in a div class
$user_grab = mysqli_query($con, "SELECT * FROM users");
while($users_ = mysqli_fetch_array($user_grab)) {
$last_online = strtotime($users_['lastonline']);
if(time() - $last_online < 30) {
$client_is_online .= '
<div class="chat-list-item sidebar-tab -available" data-target="#chat-view-tab" style="background: rgba(255,255,255,0.1); padding: 5px;">
<img class="chat-list-avatar" src="'.$users_['profile_picture'].'" style="width: 40px; height: 40px; padding: 7px; border-radius: 20px;" /><i class="fa fa-circle chat-list-status"> </i>
<div class="chat-list-user">'.$users_['username'].' (<font size="2">'.get_users_level_all($users_['userLevel']).'</font>)</div>
<div class="chat-list-excerpt">Online</div>
</div>
';
} else {
$client_is_online .= '
<div class="chat-list-item sidebar-tab -away" data-target="#chat-view-tab" style="background: rgba(255,255,255,0.1); padding: 5px;">
<img class="chat-list-avatar" src="'.$users_['profile_picture'].'" style="width: 40px; height: 40px; padding: 7px; border-radius: 20px;" /><i class="fa fa-circle chat-list-status"> </i>
<div class="chat-list-user">'.$users_['username'].' (<font size="2">'.get_users_level_all($users_['userLevel']).'</font>)</div>
<div class="chat-list-excerpt">Offline</div>
</div>
';
}
}
我的第二个代码(获取在线用户数量 - 完美运行,但我需要使用这种方式检查每个用户是否在线):
//Count online users
$session = session_id(); $time = time(); $time_check = $time - 30; //We have set a check of 30 seconds
$result = mysqli_query($con, "SELECT * FROM online_users WHERE session = '$session'");
$count = mysqli_num_rows($result);
if($count == '0') { $result1 = mysqli_query($con, "INSERT INTO online_users(session, time) VALUES ('$session', '$time')"); }
else { $result2 = mysqli_query($con, "UPDATE online_users SET time = '$time' WHERE session = '$session'"); }
$result3 = mysqli_query($con, "SELECT * FROM online_users");
$totalOnline = mysqli_num_rows($result3);
$result4 = mysqli_query($con, "DELETE FROM online_users WHERE time < $time_check");