PHP 上次登录脚本[关闭]

2023-11-29

我想知道一种好的、有效的方法来判断我的用户上次登录是多久前的事。

在用户个人资料中,我希望说明他们上次登录是多久前的事。

Eg:

用户1 上次登录:2小时前

用户2 上次登录:3 分钟前

用户3 上次登录:2 个月前


我将把他们最后的登录信息保存在 MySQL 数据库中,但想知道如何执行该脚本。

我刚刚意识到 Stackoverflow 使用了这个功能,这样可以帮助你理解我想要的东西。


mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID);

这就是我更新数据库的方式。


每个页面请求仅更新其最后的活动。

<?php

mysql_query("UPDATE users SET lastactivity = ".time()." WHERE id = ".$userID);

要显示他们上次在线的时间,只需从数据库中选择他们的最后活动字段并显示它

<?php
$activity = mysql_result(mysql_query("SELECT lastactivity FROM users WHERE id = ".$userID), 0);
echo "Last activity: ".relativeTime($active);

where relativeTime()是我一直在使用的函数:

function relativeTime($time, $short = false){
    $SECOND = 1;
    $MINUTE = 60 * $SECOND;
    $HOUR = 60 * $MINUTE;
    $DAY = 24 * $HOUR;
    $MONTH = 30 * $DAY;
    $before = time() - $time;

    if ($before < 0)
    {
        return "not yet";
    }

    if ($short){
        if ($before < 1 * $MINUTE)
        {
            return ($before <5) ? "just now" : $before . " ago";
        }

        if ($before < 2 * $MINUTE)
        {
            return "1m ago";
        }

        if ($before < 45 * $MINUTE)
        {
            return floor($before / 60) . "m ago";
        }

        if ($before < 90 * $MINUTE)
        {
            return "1h ago";
        }

        if ($before < 24 * $HOUR)
        {

            return floor($before / 60 / 60). "h ago";
        }

        if ($before < 48 * $HOUR)
        {
            return "1d ago";
        }

        if ($before < 30 * $DAY)
        {
            return floor($before / 60 / 60 / 24) . "d ago";
        }


        if ($before < 12 * $MONTH)
        {
            $months = floor($before / 60 / 60 / 24 / 30);
            return $months <= 1 ? "1mo ago" : $months . "mo ago";
        }
        else
        {
            $years = floor  ($before / 60 / 60 / 24 / 30 / 12);
            return $years <= 1 ? "1y ago" : $years."y ago";
        }
    }

    if ($before < 1 * $MINUTE)
    {
        return ($before <= 1) ? "just now" : $before . " seconds ago";
    }

    if ($before < 2 * $MINUTE)
    {
        return "a minute ago";
    }

    if ($before < 45 * $MINUTE)
    {
        return floor($before / 60) . " minutes ago";
    }

    if ($before < 90 * $MINUTE)
    {
        return "an hour ago";
    }

    if ($before < 24 * $HOUR)
    {

        return (floor($before / 60 / 60) == 1 ? 'about an hour' : floor($before / 60 / 60).' hours'). " ago";
    }

    if ($before < 48 * $HOUR)
    {
        return "yesterday";
    }

    if ($before < 30 * $DAY)
    {
        return floor($before / 60 / 60 / 24) . " days ago";
    }

    if ($before < 12 * $MONTH)
    {

        $months = floor($before / 60 / 60 / 24 / 30);
        return $months <= 1 ? "one month ago" : $months . " months ago";
    }
    else
    {
        $years = floor  ($before / 60 / 60 / 24 / 30 / 12);
        return $years <= 1 ? "one year ago" : $years." years ago";
    }

    return "$time";
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP 上次登录脚本[关闭] 的相关文章

随机推荐

  • 为什么 CSS 选择器/HTML 属性首选破折号?

    过去我总是使用下划线来定义class and idHTML 中的属性 在过去的几年里 我改用破折号 主要是为了使自己与社区趋势 不一定是因为它对我有意义 我一直认为破折号有更多的缺点 但我没有看到它的好处 代码完成和编辑 大多数编辑器将破折
  • 优化多个文件的并行处理

    我有一个程序处理很多文件 其中每个文件需要完成两件事 首先 读取并处理文件的某些部分 然后生成结果MyFileData被存储 第一部分可以并行 第二部分则不能 按顺序执行所有操作非常慢 因为 CPU 必须等待磁盘 然后它会工作一点 然后发出
  • 为什么代码在 VB.net 中不起作用,但在 VBA 中却可以;获取对象

    VBA 代码效果很好 Sub testVBA Dim wb As Object Lotus123 Document Set wb GetObject S Temp T 0375D WK3 Lotus123 Workbook End Sub
  • Opscode Chef 注册节点时请求实体太大

    我正在注册一个在运行列表中搜索其他节点属性的节点 问题是当节点信息太大而无法通过 HTTP 放在服务器上时 然后 Chef client 打印一条 FATAL Net HTTPServerException 413 Request Enti
  • 为什么 gets() 不消耗整行输入?

    我正在尝试使用gets 从用户那里获取一个字符串 但程序似乎直接传递过来gets 用户提供输入时不会有任何停顿 为什么是gets 什么也没做 char name 13 printf Profile name gets name printf
  • 模拟二元交叉(SBX)交叉运算符示例[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我在一个研究团队中工作 解决多目标工程问题 我专注于NSGA II算法 但现在我陷入困境 我需要了解 SBX 交叉如何与数值示例一起工作 以便我可以
  • 如何防止 Less 尝试编译 CSS calc() 属性?

    The Less我正在使用的编译器 橙色比特 and 无点1 3 0 5 正在积极翻译 body width calc 100 250px 1 5em into body width calc 151 5 这显然是不希望的 我想知道是否有一
  • 移动控件时阻止表单滚动

    我有一个打开自动滚动的表单 并且表单中有一个用户可编辑区域 用户可以调整控件大小或移动控件 移动控件时 如果它们移出窗体的工作区 则会显示滚动条 这是我的意图 现在 表单将自动向下滚动 因此当用户不释放鼠标时 控件将继续向下移动 这显然不是
  • 用值填充张量中的特定索引

    我是张量流初学者 我创建了这个张量 z tf zeros 20 2 tf float32 我想改变索引的值z 2 1 and z 2 2 to 1 0而不是零 我怎样才能做到这一点 你什么exactly无法询问有两个原因 z是一个常数张量
  • 多个模板中的 Twig Assetic 样式表

    我正在尝试将样式表添加到数组中 以便当树枝模板延伸到第二层和第三层时 聚合的样式将继续下去 这个主题是相关的跨继承模板组合资产资源 From 配置 yml 我做了一个全局数组mystyles这样我们就可以在渲染过程中 冒泡 时添加到必要的样
  • web.py 应用程序上的 Pytests 未覆盖方法代码

    首先 很抱歉 如果术语不是 100 正确 或者有些东西没有 100 有意义 我对 Web 应用程序开发和在堆栈溢出上发布的文章还很陌生 我有一个 web py 应用程序 需要使用 pytest 测试其功能并生成代码覆盖率报告pytest c
  • 如何找出哪个变量具有最大值

    if A gt B and C and D print A wins if B gt A and C and D print B wins 如何检查并查看哪个变量包含组中最大的整数 决定谁胜谁负 您可以测试每一项 if A gt B and
  • 如何离线安装 DoctrineFixturesBundle

    首先 由于我的 ISP 我无法使用 Composer 所以 我需要一种方法来安装DoctrineFixturesBundle手动 所以我开始从github 还有data fixtures捆 我在我的项目中创建这个文件夹结构 vendor d
  • SSE 的 EventSource 和 XMLHttpRequest 之间的区别

    我正在实现服务器发送事件应用程序逻辑 服务器端已经完成 现在正在处理客户端部分 在我看来 JS 正在使用 EventSource 对象 这看起来非常合乎逻辑 因为它就是为此而设计的 但它也有很多限制 只有 GET 请求 没有标头 没有数据
  • Datagramsocket:receive(...) 如何处理数据包的碎片

    我从我的教授那里了解到 使用 UDP 套接字发送的数据报包在较低层中会被分段 并且may作为多个数据包到达接收端 例如 如果我在数据报包中发送 1000 字节的数据 则在接收端might到达时 例如 2 字节 500 字节 12 字节等 因
  • 如何将图像从 Java Applet 发送到 JavaScript?

    我有一个正在生成图像的 Java Applet 最终 我想将图像数据插入数据库 因此我想将图像数据临时存储在包含小程序的页面上的表单字段中 我希望做到这一点而不在客户端计算机上存储图像文件 这一切都来自签名板 以下是一些应该从 sigObj
  • 如何使用 toJSON 更改序列化实体的属性名称?

    我想序列化一个属性 其名称与实体中的名称不同 Entity export class MyEntity This should be serialized with name column in JSON Column name strin
  • 如何更改列的堆叠顺序?

    使用 Bootstrap 3 我有一个非常简单的布局 例如 div class container div class row div class col sm 4 Header Content Left div div class col
  • 如何在CSS中使用边框的clip-path属性

    I have clip part达到 偷工减料 的效果 我想将背景更改为白色并使用绿色边框 问题是 当我将背景更改为白色时 角落是空的 如何在悬停时制作绿色边框角 test background red width 100px height
  • PHP 上次登录脚本[关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 我想知道一种好的 有效的方法来判断我的用户上次登录是多久前的事 在用户个人资料中 我希望