我正在使用codeigniter中的聊天我想让活跃的用户参与进来,这样我就可以在聊天中显示用户是在线还是离线。
我尝试了以下但结果是空的。
$this->session->all_userdata();
请帮帮我。
答案 0 :(得分:1)
如果您正在使用数据库会话,则可以使用对ci_sessions表的调用(或您为其命名的任何内容)来验证登录状态。然后,您可以使用简单查询来验证他们是否在过去一小时内(或其他任何时间)浏览并验证它们是否在线。
示例SQL查询:
SELECT FROM_UNIXTIME(timestamp) AS 'timestamp' from ci_sessions
WHERE timestamp > UNIX_TIMESTAMP(DATE_ADD(CURDATE(),INTERVAL -1 HOUR))
ORDER BY timestamp DESC
这将返回过去一小时内活动的所有用户(每次请求页面时都会更新时间戳列)
您还可以从“数据”中获取用户详细信息。列...
$this->session->all_userdata()
不会仅返回所有登录用户当前登录用户的所有可用数据
答案 1 :(得分:0)
您需要在表格中使用额外字段作为" fld_userlogin"。如果用户登录fld_userlogin将为1,则使用此字段进行管理。其他明智的0.注销后fld_userlogin将为0.这是非常简单的比较会话。一切顺利
答案 2 :(得分:0)
您可能希望使用网络套接字,因为我认为如果用户在线或离线,您需要即时反馈。查看Ratchet(http://socketo.me/docs/hello-world),我确信有CI实现使用这个或类似的东西。真的取决于聊天应用的范围以及您想要反馈的瞬间。