PHP获取所有用户数据并检查每个用户的lastonline

时间:2017-07-07 19:53:42

标签: php mysql

我想让每个用户获得最后一次在线时间,然后检查现在的时间减去上次在线时间是否小于上次登录后的600秒。

我已经做了一些有用的代码,但不是我想要它做的。 我想让它获取每个用户的信息。出于某种原因,此代码更新每个用户信息,具体取决于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'];
}

我的用户图片全部离线显示

每个用户上次在线时间的证明是不同的

1 个答案:

答案 0 :(得分:2)

$users_["lastonline"]是一个包含日期和时间的字符串。您需要将其解析为数字时间戳,以便从time()中减去它。

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