×

php在线

php中如何判断用户是否在线?php做用户在线与离线状态

admin admin 发表于2022-05-21 03:58:15 浏览127 评论0

抢沙发发表评论

php中如何判断用户是否在线


代码很简单,但实现逻辑自己要想明白,

网站头公共文件加下边代码,意思即每个页面都有包含下面这个php代码,总之你懂,
这样,只要有用户登陆,或者打开别的页面,就会往 all_user 表里 的action_time字段添
加操作时间, 当你检测用户是否在线,就把用户操作时间action_time转化为 几分钟前,小时前,
,知道每个用户是 几分几小时前操作,就可以把几分钟前的显示在线,而几小时前的,显示离线或几小时前,

例如用户15:30分登陆,打开几个页面,然后就关电脑或出门, 这时all_user 表已经记录了操作时间
网站可以用 wordTime($time)显示他的操作时间离现在为2分钟前,或20分钟前,将直接显示在线。
至于多少分钟不操作算离线,自己调分钟数
《?php
strtotime(“now“); //取服务器当前时间戳,得到值如1533213376

$sql=“UPDATE all_user SET action_time=$action_time WHERE userid=$cook_userid“;
//往用户表里更新 操作时间,具体要填自己的表名和用户名的 字段名

?》



//======================下边功能代码可copy 直接用
《?php  
function wordTime($time) {
        $time = (int) substr($time, 0, 10);
        $int = time() - $time;
        $str = ’’;
        if ($int 《= 2){
            $str = sprintf(’在线’, $int);
        }elseif ($int 《 60){
            $str = sprintf(’在线’, $int);        //60秒内
         }elseif ($int 《 300){
            $str = sprintf(’在线5’, $int);        //5分钟内
        }elseif ($int 《 1800){
            $str = sprintf(’在线+’, floor($int / 60));       //30分钟内
        }elseif ($int 《 3600){ 
            $str = sprintf(’%d分钟前’, floor($int / 60));        //30-60分钟内
        }elseif ($int 《 86400){
            $str = sprintf(’%d小时前’, floor($int / 3600));
        }elseif ($int 《 2592000){
            $str = sprintf(’%d天前’, floor($int / 86400));
        }elseif ($int 《 2592000*30){
            $str = sprintf(’%d月前’, floor($int / 2592000));
        
        }else{
            $str = ““;//date(’Y-m-d’, $time);
        }
   
   //调用方法,把值给到变量time 如: $time=“1533213376“;  echo wordTime($time);  结果将输出 20分钟前    
?》

不存在频繁操作数据库问题,因为打开网页都要查询mysql 用户名等这些,也不差这条更新命令,


php做用户在线与离线状态


在用户表里加个session字段存取时间戳。在文件头每次刷新就更新它。一定时间不刷新就表示人物离线了。读取这个会员数据的时候和当前时间戳对比小于一定数就离线了

有什么可以在线执行php代码还要是各个版本都能执行的在线工具啊


我平时一直使用的是vaptu tools在线工具来执行的,能执行很多的语言代码。很好用,推荐你用啊。在线的编辑器也很好用,php在线执行,在线php代码运行 tools.vaptu.com/online
-php在线