php做统计在线多少人代码分享

先创建一个Online表

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `online`
-- ----------------------------
DROP TABLE IF EXISTS `online`;
CREATE TABLE `online` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ip` varchar(30) NOT NULL,
  `province` varchar(64) NOT NULL,
  `addtime` int(10) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

在网站登录成功的时候就把用户信息存进去,然后开启cookies,把用户名之类的存cookies里面

图片仅供参考

登录成功可以先执行php

$query = mysql_query("select id from online where ip='$ip'");

先去查询数据库有没有同ip存在的

if(!mysql_num_rows($query)){
			//如果不存在访客IP 将访客信息插入到数据表中
			mysql_query("insert into online (ip,province,addtime) values ('$ip','注册会员','$time')"); 
		}else{
			//如果存在,则更新该用户访问时间 
  			mysql_query("update online set addtime='$time' where ip='$ip'"); 
		} 

新建一个online.php文件

这个文件可以用轮训每秒请求一次,这里你需要修修改改,具体咋修改自己看着办吧

<?php
	header("Content-type:text/html;charset=utf-8");
	include("../data/config.php");
	include("../data/function.php");
	$time=time();
	$outtime = $time-600; 
	$re=mysql_fetch_array(mysql_query("delete from online where addtime<'$outtime'")); //删除过期的用户
	list($totalOnline) = mysql_fetch_array(mysql_query("select count(*) from online"));
	$data['code']=200;
	$data['online']=$totalOnline;
	echo json_encode($data);
?>

你想要在哪展示就在哪个文件里先把这些写进入

<script type="text/javascript">
        function runEvery10Sec() { 
            // 1000 * 10 = 10 秒钟
            setTimeout( runEvery10Sec, 1000 * 1 ); 
            $.ajax( {
               "dataType" : 'json',
               "type" : "POST",
               "url" : "../ajax/online.php",//这里写你online.php文件的位置
               "data" : { "param" : "123" },
               "success" : function( data ) {   
                   console.log(data.online);
                   document.getElementById('onlinepeo').innerText = data.online;
               }
            } );
        }
    </script>

同样的在展示位置这样写

<blockquote class="layui-elem-quote">当前在线用户数:
            <script type="text/javascript">runEvery10Sec()</script>
            <span class="x-red" id="onlinepeo"></span>!</blockquote>

 

上面的ajax上是每秒请求online文件返回json数据

所以这在线用户数就是每秒刷新一次

退出登录的时候也可以把用户的cookies删除掉

<?php
header("Content-type:text/html;charset=utf-8");
include("./data/config.php");
include("./data/function.php");
$ip = get_client_ip(); //获取客户端IP 
$query = mysql_fetch_array(mysql_query("select id from online where ip='$ip'")); 
$id=(int)$query['id'];
if(!empty($query)){
	setcookie('uid',$s['id'],time()-1,'/');
	setcookie('user',$s['user'],time()-1,'/');
	setcookie('pass',$s['pass'],time()-1,'/');
	setcookie('uid',$s['id'],time()-1);
	setcookie('user',$s['user'],time()-1);
	setcookie('pass',$s['pass'],time()-1);
	setcookie('ip',$ip,time()-1);
	$sql=mysql_fetch_array(mysql_query("delete from online where id='$id'"));
	header('Location: /login.html');
}else{
	setcookie('uid',$s['id'],time()-1,'/');
	setcookie('user',$s['user'],time()-1,'/');
	setcookie('pass',$s['pass'],time()-1,'/');
	setcookie('uid',$s['id'],time()-1);
	setcookie('user',$s['user'],time()-1);
	setcookie('pass',$s['pass'],time()-1);
	setcookie('ip',$ip,time()-1);
	header('Location: /login.html');
}
function get_client_ip() { 
  if (getenv("HTTP_CLIENT_IP") && strcasecmp(getenv("HTTP_CLIENT_IP"), "unknown")) 
    $ip = getenv("HTTP_CLIENT_IP"); 
  else if (getenv("HTTP_X_FORWARDED_FOR") && strcasecmp(getenv("HTTP_X_FORWARDED_FOR"), 
"unknown")) 
    $ip = getenv("HTTP_X_FORWARDED_FOR"); 
  else if (getenv("REMOTE_ADDR") && strcasecmp(getenv("REMOTE_ADDR"), "unknown")) 
    $ip = getenv("REMOTE_ADDR"); 
  else if (isset ($_SERVER['REMOTE_ADDR']) && 
$_SERVER['REMOTE_ADDR'] && strcasecmp($_SERVER['REMOTE_ADDR'], "unknown")) 
    $ip = $_SERVER['REMOTE_ADDR']; 
  else
    $ip = "unknown"; 
  return ($ip); 
} 
?>

 

 

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论