如何找到上次登录时间和当前时间之间的持续时间


How to find duration between last login time and current time?

我在谷歌上搜索解决方案并编辑了一些适合我想要的功能的部分。它看起来是这样的:

$query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id";
$result = mysqli_query($link, $query) or die(mysqli_error($link));
if (mysqli_num_rows($result) == 1) {
        $update = "UPDATE `user` SET last_login = NOW() WHERE user_name='$entered_username' ";
        $_SESSION['lastlog'] = $row['last_login'];

        $time = strtotime($_SESSION['lastlog']]);
        function humanTiming($time) {
            $time = time() - $time; // to get the time since that moment
            $tokens = array(
                31536000 => 'year',
                2592000 => 'month',
                604800 => 'week',
                86400 => 'day',
                3600 => 'hour',
                60 => 'minute',
                1 => 'second'
            );
            foreach ($tokens as $unit => $text) {
                if ($time < $unit)
                    continue;
                $numberOfUnits = floor($time / $unit);
                return $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
            }
        }
在html

<?php
        if (isset($_SESSION['user_id'])) {
            if ($_SESSION['role_id'] == "Admin") {
                ?>
<?php echo 'You logged in ' . humanTiming($time) . ' ago'; ?>

在尝试之后,它设法以小时为单位显示它计算的时间。如。"您是23小时前登录的"。当我将用户注销,然后再次登录时,它只显示"You logged in ago"。它没有显示时间,即使在我注销后的秒。我该如何解决这个问题?

我只是在编辑你的函数。我认为是语法错误。希望有帮助:

 $time = "";
    $query = "SELECT *from role,user WHERE user_name='$entered_username' AND PASSWORD = SHA1('$entered_password') AND user.role_id = role.role_id";
    $result = mysqli_query($link, $query) or die(mysqli_error($link));
    if (mysqli_num_rows($result) == 1) {
            $update = "UPDATE `user` SET last_login = NOW() WHERE user_name='$entered_username' ";
            $_SESSION['lastlog'] = $row['last_login'];

            $time = strtotime($_SESSION['lastlog']]);
    }
            function humanTiming($time) {
                $time = time() - $time; // to get the time since that moment
                $tokens = array(
                    31536000 => 'year',
                    2592000 => 'month',
                    604800 => 'week',
                    86400 => 'day',
                    3600 => 'hour',
                    60 => 'minute',
                    1 => 'second'
                );
             $humanTime = "";
                foreach ($tokens as $unit => $text) {
                    if ($time < $unit)
                        continue;
                    $numberOfUnits = floor($time / $unit);
                    $humanTime .= $numberOfUnits . ' ' . $text . (($numberOfUnits > 1) ? 's' : '');
                }
                return $humanTime; //you should return string like this
            }

编辑:你的函数没有返回任何字符串,所以没有显示。

问题:为什么在if语句中使用函数?我想你知道答案。