·设为首页收藏本站📧邮箱修改🎁免费下载专区📒收藏夹👽聊天室📱AI智能体
返回列表 发布新帖

全局当前登录用户在线时间调用问题

1061 2
发表于 2020-11-21 11:13:36 | 查看全部 阅读模式

马上注册,免费下载更多dz插件网资源。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
在线时间  $_G['member']['oltime'] 这样调不出来登录用户在线时间,各位大佬全局当前登录用户在线时间怎么搞出来的
我要说一句 收起回复

评论2

Discuz智能体Lv.8 发表于 2025-3-16 12:57:24 | 查看全部
在Discuz!中,全局当前登录用户的在线时间可以通过`$_G`全局变量来获取。具体来说,`$_G['member']['oltime']`存储了当前用户的在线时间(以秒为单位)。如果你在模板或PHP代码中调用这个变量,应该能够获取到用户的在线时间。

### 具体调用方法

1. **在PHP代码中调用:**
   如果你在PHP代码中需要获取当前用户的在线时间,可以直接使用`$_G['member']['oltime']`。

  
  1. $online_time = $_G['member']['oltime'];
  2.    echo "当前用户在线时间: " . $online_time . " 秒";
复制代码


2. **在模板中调用:**
   如果你需要在模板中显示当前用户的在线时间,可以使用以下代码:

  
  1. <!--{if $_G['uid']}-->
  2.    当前用户在线时间: <!--{echo $_G['member']['oltime']}--> 秒
  3.    <!--{/if}-->
复制代码


   这段代码首先检查用户是否登录(`$_G['uid']`),如果登录了,则输出用户的在线时间。

### 注意事项

- **用户登录状态检查:** 在调用`$_G['member']['oltime']`之前,最好先检查用户是否登录(通过`$_G['uid']`),因为未登录用户是没有在线时间记录的。
  
- **单位转换:** `$_G['member']['oltime']`返回的是秒数,如果你需要以分钟或小时显示,可以在代码中进行转换。

  1. $online_time_minutes = intval($_G['member']['oltime'] / 60);
  2.   echo "当前用户在线时间: " . $online_time_minutes . " 分钟";
复制代码


### 示例

假设你想在用户个人主页显示用户的在线时间,可以在`template/default/member/profile.htm`模板中添加以下代码:

  1. <!--{if $_G['uid']}-->
  2. <p>在线时间: <!--{echo intval($_G['member']['oltime'] / 60)}--> 分钟</p>
  3. <!--{/if}-->
复制代码


这样,用户在访问个人主页时,就能看到自己的在线时间了。

### 总结

通过`$_G['member']['oltime']`可以轻松获取当前登录用户的在线时间。你可以在PHP代码或模板中调用这个变量,并根据需要进行单位转换或其他处理。如果你在调用过程中遇到问题,可以检查用户是否登录,或者查看是否有其他代码影响了`$_G`变量的使用。

如果你有更多关于Discuz!开发的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复
Discuz智能体Lv.8 发表于 2025-3-21 03:42:15 | 查看全部
在Discuz!中,全局当前登录用户的在线时间可以通过`$_G`全局变量来获取。具体来说,`$_G['member']['oltime']`存储了当前用户的在线时间(以秒为单位)。

如果你发现`$_G['member']['oltime']`无法正确获取在线时间,可能是因为该变量在某些情况下未被正确初始化或赋值。你可以尝试以下方法来确保获取到正确的在线时间:

1. **确保用户已登录**:只有在用户登录的情况下,`$_G['member']`才会包含用户的相关信息。如果用户未登录,`$_G['member']`将为空。

2. **检查模板中的调用方式**:如果你在模板中调用在线时间,可以使用以下代码:
  
  1. <!--{if $_G['uid']}-->
  2.    在线时间: <!--{echo dgmdate($_G['member']['oltime'], 'H:i:s')}-->
  3.    <!--{/if}-->
复制代码

   这里使用了`dgmdate`函数将秒数转换为`时:分:秒`的格式。

3. **在PHP代码中调用**:如果你在PHP代码中需要获取在线时间,可以直接使用`$_G['member']['oltime']`:
  
  1. if ($_G['uid']) {
  2.        $online_time = $_G['member']['oltime'];
  3.        echo '在线时间: ' . gmdate('H:i:s', $online_time);
  4.    }
复制代码


4. **检查插件或扩展的影响**:如果你使用了某些插件或扩展,可能会影响`$_G`变量的赋值。确保插件没有覆盖或修改`$_G['member']`的相关数据。

5. **调试信息**:如果仍然无法获取在线时间,可以尝试输出`$_G['member']`的内容,检查是否有其他有用的信息:
  
  1. print_r($_G['member']);
复制代码


6. **数据库查询**:如果以上方法都无法解决问题,你可以直接从数据库中查询用户的在线时间。在线时间通常存储在`common_member_status`表中的`oltime`字段中。你可以通过以下SQL查询获取:
  
  1. SELECT oltime FROM common_member_status WHERE uid = {用户UID};
复制代码


通过以上方法,你应该能够成功获取并显示当前登录用户的在线时间。如果问题仍然存在,建议检查Discuz!的版本和相关插件,确保没有冲突或错误。
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
我要说一句 收起回复

回复

 懒得打字嘛,点击右侧快捷回复【查看最新发布】   【应用商城享更多资源】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

图文热点
关闭

站长推荐上一条 /1 下一条

AI智能体
投诉/建议联系

discuzaddons@vip.qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,按照公告处理!!!
  • 联系QQ客服
  • 添加微信客服

联系DZ插件网微信客服|最近更新|Archiver|手机版|小黑屋|DZ插件网! ( 鄂ICP备20010621号-1 )|网站地图 知道创宇云防御

您的IP:3.144.16.26,GMT+8, 2025-5-12 10:19 , Processed in 0.288175 second(s), 77 queries , Gzip On, Redis On.

Powered by Discuz! X5.0 Licensed

© 2001-2025 Discuz! Team.

关灯 在本版发帖
扫一扫添加微信客服
QQ客服返回顶部
快速回复 返回顶部 返回列表