功能是 统计在线访客的
我在数据库建了一个 ID(int 6) name(char 15) date(int 10) adminid(tinyint 1)的小表但有两个问题 1.如果用户有登录 我还可以通过where name=XXX 去更新他的时间戳 维持他的登录状态,但如果是访客的话 我没办法通过name去比对,通过IP的话 万一是同IP登录那只会算成一个访客,但没限制的话,访客刷新一次,数据库里就多一个在线用户,遇上没事一直刷新的,我就悲催了.想请教下 怎么写才能正确的统计访客的数量呢?2.这样写的话,我的数据库的插入删除量会很大,时间长了可能会出问题(ID涨的太快了 INT 6也许都不够用),怎么写才能避免呢?实在想不出来 麻烦指点一下 谢谢了代码如下:
//统计在线用户人数
    public function online_check(){
        //连数据库
        $db_id = $this->db_connect();        //返回当前时间戳 为删掉过期的用户做准备
        $times = date('U');        //没登陆叫访客 登陆了就取用户名
        if(!$_SESSOIN['se_name']){              $username = '访客';        }else{              $username = $_SESSION['se_name'];        }        //把登陆信息写到数据库里面
        $query = "insert into online set name='$username',date='$times',adminid='0'";        $result = $db_id->query($query);        //没成功返回false
        if(!$result){
        
             return false;        }        //删除超时的用户信息        $times = $times - 300;
        $query = "delete from online where date<'$times'";        $result = $db_id->query($query);        if(!$result){            return false;        }
        //读取数据库里面的name
        $query = "select name from online ";        $result = $db_id->query($query);        if(!$result){            return false;        }
        //以数组返回用户登录列表
        $rows = $result->num_rows;
        $user_list['count'] = $rows;        while($rows = mysqli_fetch_object($result)){            $user_list[] = $rows->name;        }         return $user_list;    }

解决方案 »

  1.   

    1.不管是不是访客,都去session_start()。用PHPSESSID来检索用户
    2.不设id,用PHPSESSID做主键
      

  2.   

    你看这样呢:不管是游客还是登陆用户,只要一浏览你的网站拟具用ip建立一个cooke,用来标示浏览了你的网站,并建立一个session(只建立一个),用以记录访客数量的!但当一个访客登陆你的网站的时候,你就销毁那个cookie(根据ip),对应的session里面的计数也减1!你看这个能否实现你的需求吧!
      

  3.   

    难道楼主没看过php的ssession吗?
      

  4.   

    在网站管理中经常会需要进行在线人数统计来计算网站的访问量和当前在线人数等。一般独立在线人数统计程序都是统计在线的IP数,而这并不准确例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样如果同一个局域网的无论多少人人访问你的网站则只被认为是一个人。下面这个程序解决了此问题,它以电脑为单为,每台电脑便算一个访问者,当然因为使用的是COOKIE,如果你在同一台电脑上使用两种不同核心的浏览器访问那就别当别论了!
    代码下载:http://www.phpnewer.com/index.php/Ymgx/detail/id/7