PHP基于cookie实现统计在线人数功能示例


Posted in PHP onJanuary 16, 2019

本文实例讲述了PHP基于cookie实现统计在线人数功能。分享给大家供大家参考,具体如下:

online.php文件:

<?php
/*
  @ PHP 在线人数统计程序
  Copyright (c) www.vgot.cn by Pader 1:25 2009年1月7日
  Homepage:http://www.vgot.cn
  QQ: 270075658
  How to use it: <script src="online.php"></script>
  note: 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确
  例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样
  如果同一个局域网的无论多少人人访问你的网站则只被认为是一个人
  这个小巧的程序解决了此问题,它以电脑为单为,每台电脑便算一个访问者
  当然因为使用的是COOKIE,如果你在同一台电脑上使用两种不同核心的浏览器访问那就别当别论了
*/
$filename = 'online.txt'; //数据文件
$cookiename = 'VGOTCN_OnLineCount'; //cookie名称
$onlinetime = 600; //在线有效时间,单位:秒 (即600等于10分钟)
$online = file($filename); 
$nowtime = time(); 
$nowonline = array();
/*
  @ 得到仍然有效的数据
*/
foreach($online as $line) {
  $row = explode('|',$line);
  $sesstime = trim($row[1]);
  if(($nowtime - $sesstime) <= $onlinetime) { //如果仍在有效时间内,则数据继续保存,否则被放弃不再统计
    $nowonline[$row[0]] = $sesstime; //获取在线列表到数组,会话ID为键名,最后通信时间为键值
  }
}
/*
  @ 创建访问者通信状态
    使用cookie通信
    COOKIE 将在关闭浏览器时失效,但如果不关闭浏览器,此 COOKIE 将一直有效,直到程序设置的在线时间超时
*/
if(isset($_COOKIE[$cookiename])) { //如果有COOKIE即并非初次访问则不添加人数并更新通信时间
  $uid = $_COOKIE[$cookiename];
} else { //如果没有COOKIE即是初次访问
  $vid = 0; //初始化访问者ID
  do { //给用户一个新ID
    $vid++;
    $uid = 'U'.$vid;
  } while (array_key_exists($uid,$nowonline));
  setcookie($cookiename,$uid);
}
$nowonline[$uid] = $nowtime; //更新现在的时间状态
/*
  @ 统计现在在线人数
*/
$total_online = count($nowonline);
/*
  @ 写入数据
*/
if($fp = @fopen($filename,'w')) {
  if(flock($fp,LOCK_EX)) {
    rewind($fp);
    foreach($nowonline as $fuid => $ftime) {
      $fline = $fuid.'|'.$ftime."\n";
      @fputs($fp,$fline); 
    }
    flock($fp,LOCK_UN);
    fclose($fp);
  }
}
  echo 'document.write("'.$total_online.'");'; 
?>

通过注释中的说明可知,如下js语句访问即可:

<script src="online.php"></script>

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php 中文处理函数集合
Aug 27 PHP
php2html php生成静态页函数
Dec 08 PHP
精通php的十大要点(上)
Feb 04 PHP
php 将excel导入mysql
Nov 09 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
PHP中Fatal error session_start()错误解决步骤
Aug 05 PHP
详解PHP导入导出CSV文件
Nov 03 PHP
Yii2超好用的日期和时间组件(值得收藏)
May 05 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
Jun 19 PHP
php利用ffmpeg提取视频中音频与视频画面的方法详解
Jun 07 PHP
PHP 中TP5 Request 请求对象的实例详解
Jul 31 PHP
浅谈PHP中new self()和new static()的区别
Aug 11 PHP
php curl获取https页面内容,不直接输出返回结果的设置方法
Jan 15 #PHP
对php 判断http还是https,以及获得当前url的方法详解
Jan 15 #PHP
php成功操作redis cluster集群的实例教程
Jan 13 #PHP
PHP赋值的内部是如何跑的详解
Jan 13 #PHP
PHP5.5新特性之yield理解与用法实例分析
Jan 11 #PHP
PHP基于openssl实现的非对称加密操作示例
Jan 11 #PHP
PHP类的自动加载机制实现方法分析
Jan 10 #PHP
You might like
PHP模拟SQL Server的两个日期处理函数
2006/10/09 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
PHP网站常见安全漏洞,及相应防范措施总结
2021/03/01 PHP
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
javascript DOM编程实例(智播客学习)
2009/11/23 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
thinkphp中常用的系统常量和系统变量
2014/03/05 Javascript
js通过location.search来获取页面传来的参数
2014/09/11 Javascript
javascript+ajax实现产品页面加载信息
2015/07/09 Javascript
JavaScript使用RegExp进行正则匹配的方法
2015/07/11 Javascript
js点击列表文字对应该行显示背景颜色的实现代码
2015/08/05 Javascript
JS jQuery使用正则表达式去空字符的简单实现代码
2017/05/20 jQuery
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
快速解决vue-cli不能初始化webpack模板的问题
2018/03/20 Javascript
jquery获取元素到屏幕四周可视距离的方法
2018/09/05 jQuery
Vue基础配置讲解
2019/11/29 Javascript
vue实现购物车列表
2020/06/30 Javascript
JavaScript 空间坐标的使用
2020/08/19 Javascript
vue keep-alive的简单总结
2021/01/25 Vue.js
使用Python中PDB模块中的命令来调试Python代码的教程
2015/03/30 Python
Python中subprocess模块用法实例详解
2015/05/20 Python
Python实现LRU算法的2种方法
2015/06/24 Python
用Python抢过年的火车票附源码
2015/12/07 Python
python 创建一维的0向量实例
2019/12/02 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
python操作链表的示例代码
2020/09/27 Python
python 元组和列表的区别
2020/12/30 Python
css3一个简易的 LED 数字时钟实现方法
2020/01/15 HTML / CSS
阿迪达斯奥地利官方商城:adidas.at
2016/10/16 全球购物
会计出纳岗位职责
2013/12/25 职场文书
人事部主管岗位职责
2013/12/26 职场文书
反对形式主义、官僚主义、享乐主义和奢靡之风整改措施
2014/09/17 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
导游词之京东大峡谷旅游区
2019/10/29 职场文书
Python Pandas解析读写 CSV 文件
2022/04/11 Python
python数字图像处理数据类型及颜色空间转换
2022/06/28 Python