【问题标题】:PHP Get all users data and check lastonline for eachPHP 获取所有用户数据并检查每个用户的 lastonline
【发布时间】:2017-07-08 04:31:39
【问题描述】:

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

我编写了一些代码,它可以工作,但不是我想要的。 我希望它能够获取每个用户的信息。出于某种原因,此代码会根据 1 个用户更新每个用户的信息,我很确定。当我将代码中的小于号更改为大于号时,即使 my 用户上次在线时间是 1 分钟前,它们也会随之更改。 p>

我的代码:

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

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

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

【问题讨论】:

  • user_session_timeout() 至少听起来与当前用户有关。它有什么作用?
  • @colburton 我刚刚更新了我的问题。它只是从我的数据库中读取 600 秒作为整数。
  • 你的foreach 循环从不使用$user 做任何事情。你为什么在那儿循环?
  • @Barmar 是的,我不太确定。我把它拿出来了,还是一样。

标签: php mysql


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 1970-01-01
    • 2017-10-03
    • 2013-02-20
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多