简介

我们都很好奇自己的站点有没有被人所熟知,每天能有多少的访问量。

最简单的方法便是使用平台的统计功能,比如cnzz,百度统计、谷歌统计等等平台,但这篇文章的重点是自己写代码实现统计功能

一、HTML语句实现

推荐加到页面的底部界面

<center>
<div><a href="https://www.qian.blue/"> © 勿埋我心</a><script async src="//busuanzi.ibruce.info/busuanzi/2.3/busuanzi.pure.mini.js"></script><span id="busuanzi_container_site_uv" style='display:none'> 访客总人数<span id="busuanzi_value_site_uv"></span>人</span><span id="busuanzi_container_site_pv" style='display:none'> 本站总访问量<span id="busuanzi_value_site_pv"></span>次</span>
</div>
</center>

二、文件方式简单统计

用php实现一个简单的访客统计功能,统计网站的总访问量是多少,简单实用。php通过每次打开文本文件,获取文本中的数字,进行加1再写入到文本中。所以只要每次有访问就会进行累加pv数量来实现的简单访客次数的统计。

    <?phpif(!file_exists("count.txt")){$one_file=fopen("count.txt","w+"); //建立一个统计文本,如果不存在就创建echo"您是第<font color='red'><b>1</b></font>位访客"; //首次直接输出第一次fwrite("count.txt","1");  //把数字1写入文本fclose("$one_file");}else{ //如果不是第一次访问直接读取内容,并+1,写入更新后再显示新的访客数$num=file_get_contents("count.txt");$num++;file_put_contents("count.txt","$num");$newnum=);$newnum=file_get_contents("count.txt");echo"您是第<font color='red'><b>".$newnum."</b></font>位访客";setcookie("access",1, time()+3600*24);//访问过标记}}?>

三、获取详细信息统计

在网站的一个公共文件中,进行每次访问时获取用户的ip、浏览器类型、系统类型、访问时间、访问当前地址、访问来源、ip对属地信息的统计。通过这些信息就能大致知道哪个地方访问人数最大、哪篇文章访问人数最大、今日访问人数、pv、恶意访问ip等信息就都出来了。

1.数据库表结构:

    CREATE TABLE `visitors` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',`ip` char(30) DEFAULT NULL COMMENT 'ip地址',`froms` char(100) DEFAULT NULL COMMENT '归属地',`add_time` datetime NOT NULL COMMENT '添加时间',`system` char(60) DEFAULT NULL COMMENT '操作系统',`browser` char(200) DEFAULT NULL COMMENT '浏览器',`pageview` char(200) DEFAULT NULL COMMENT '受访页面',`source_link` varchar(1000) DEFAULT NULL COMMENT '来源链接',PRIMARY KEY (`id`),KEY `ip` (`ip`),KEY `add_time` (`add_time`)) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='访客表';

2.php统计代码

在一个公共php文件中放置获取信息代码,并写入到数据库中。

    //获取访客信息//pdo连接数据库$db_ms='mysql';$db_host='127.0.0.1';$db_user='root';$db_pass='123456';$db_name='test';$dbh=$db_ms.':host='.$db_host.';'.'dbname='.$db_name;try{$dbh = new PDO($dbh,$db_user,$db_pass);//echo '连接成功';$dbh -> query('set names utf8');}catch(PDOException $e){die('error:'.$e->getMessage());}function visitor(){global $dbh;#当前url$url=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];#获取ip和来源$address = GetIpFrom();$froms = $address[0];$ip = $address[1];#获取浏览器和系统类型$broswer = get_broswer();$os = get_os();#获取最后来源地址if(empty($_SERVER['HTTP_REFERER'])){$source_link = $url;}else{$source_link = $_SERVER['HTTP_REFERER'];}#限制ip访问次数$sqlco = "select count(id) as num FROM visitors where ip ="."'".$ip."'"." AND add_time>="."'".date('Y-m-d',time())."'";$cres = $dbh -> query($sqlco);$vnum = $cres -> fetch();if($vnum['num']>10000){exit('Sorry... You visited the number more than 10000 times today, and the access denied!');}#获取到的信息放入数据库$sql =" INSERT INTO visitors (ip,froms,add_time,system,browser,pageview,source_link) VALUES ('$ip','$froms',now(),'$os','$broswer','$url','$source_link')";$dbh -> exec($sql);}

浏览器信息和ip信息获取函数

    //获取浏览器信息function get_broswer(){$sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串if (stripos($sys, "Firefox/") > 0) {preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);$exp[0] = "Firefox";$exp[1] = $b[1];  //获取火狐浏览器的版本号} elseif (stripos($sys, "Maxthon") > 0) {preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);$exp[0] = "傲游";$exp[1] = $aoyou[1];} elseif (stripos($sys, "Baiduspider") > 0) {$exp[0] = "百度";$exp[1] = '蜘蛛';}elseif (stripos($sys, "YisouSpider") > 0) {$exp[0] = "一搜";$exp[1] = '蜘蛛';}elseif (stripos($sys, "Googlebot") > 0) {$exp[0] = "谷歌";$exp[1] = '蜘蛛';}elseif (stripos($sys, "Android 4.3") > 0) {$exp[0] = "安卓";$exp[1] = '4.3';}elseif (stripos($sys, "MSIE") > 0) {preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);$exp[0] = "IE";$exp[1] = $ie[1];  //获取IE的版本号} elseif (stripos($sys, "OPR") > 0) {preg_match("/OPR\/([\d\.]+)/", $sys, $opera);$exp[0] = "Opera";$exp[1] = $opera[1];} elseif(stripos($sys, "Edge") > 0) {//win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);$exp[0] = "Edge";$exp[1] = $Edge[1];} elseif (stripos($sys, "Chrome") > 0) {preg_match("/Chrome\/([\d\.]+)/", $sys, $google);$exp[0] = "Chrome";$exp[1] = $google[1];  //获取google chrome的版本号} elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){preg_match("/rv:([\d\.]+)/", $sys, $IE);$exp[0] = "IE";$exp[1] = $IE[1];}else if(stripos($sys,'AhrefsBot')>0){$exp[0] = "AhrefsBot";$exp[1] = '蜘蛛';}else if(stripos($sys,'Safari')>0){preg_match("/([\d\.]+)/", $sys, $safari);$exp[0] = "Safari";$exp[1] = $safari[1];}else if(stripos($sys,'bingbot')>0){$exp[0] = "必应";$exp[1] = '蜘蛛';}else if(stripos($sys,'WinHttp')>0){$exp[0] = "windows";$exp[1] = 'WinHttp 请求接口工具';}else if(stripos($sys,'iPhone OS 10')>0){$exp[0] = "iPhone";$exp[1] = 'OS 10';}else if(stripos($sys,'Sogou')>0){$exp[0] = "搜狗";$exp[1] = '蜘蛛';}else if(stripos($sys,'HUAWEIM')>0){$exp[0] = "华为";$exp[1] = '手机端';}else if(stripos($sys,'Dalvik')>0){$exp[0] = "安卓";$exp[1] = 'Dalvik虚拟机';}else if(stripos($sys,'Mac OS X 10')>0){$exp[0] = "MAC";$exp[1] = 'OS X10';}else if(stripos($sys,'Opera/9.8')>0){$exp[0] = "Opera";$exp[1] = '9.8';}else if(stripos($sys,'JikeSpider')>0){$exp[0] = "即刻";$exp[1] = '蜘蛛';}else if(stripos($sys,'Baiduspider')>0){$exp[0] <(preg_match('/win/i', $agent) && strpos($agent, '95')){$os = 'Windows 95';}else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90')){$os = 'Windows ME';}else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent)){$os = 'Windows 98';}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent)){$os = 'Windows Vista';}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent)){$os = 'Windows 7';}else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent)){$os = 'Windows 8';}else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent)){$os = 'Windows 10';#添加win10判断}else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent)){$os = 'Windows XP';}else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent)){$os = 'Windows 2000';}else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent)){$os = 'Windows NT';}else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent)){$os = 'Windows 32';}else if (preg_match('/linux/i', $agent)){$os = 'Linux';}else if (preg_match('/unix/i', $agent)){$os = 'Unix';}else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent)){$os = 'SunOS';}else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent)){$os = 'IBM OS/2';}else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent)){$os = 'Macintosh';}else if (preg_match('/PowerPC/i', $agent)){$os = 'PowerPC';}else if (preg_match('/AIX/i', $agent)){$os = 'AIX';}else if (preg_match('/HPUX/i', $agent)){$os = 'HPUX';}else if (preg_match('/NetBSD/i', $agent)){$os = 'NetBSD';}else if (preg_match('/BSD/i', $agent)){$os = 'BSD';}else if (preg_match('/OSF1/i', $agent)){$os = 'OSF1';}else if (preg_match('/IRIX/i', $agent)){$os = 'IRIX';}else if (preg_match('/FreeBSD/i', $agent)){$os = 'FreeBSD';}else if (preg_match('/teleport/i', $agent)){$os = 'teleport';}else if (preg_match('/flashget/i', $agent)){$os = 'flashget';}else if (preg_match('/webzip/i', $agent)){$os = 'webzip';}else if (preg_match('/offline/i', $agent)){$os = 'offline';}else if (preg_match('/iPhone OS 8/i', $agent)){$os = 'iOS 8';}else if (preg_match('/YisouSpider/i', $agent)){$os = '一搜引擎';}else if (preg_match('/Yahoo! Slurp/i', $agent)){$os = '雅虎引擎';}else if (preg_match('/iPhone OS 6/i', $agent)){$os = 'iOS 6';}else if (preg_match('/Baiduspider/i', $agent)){$os = '百度引擎';}else if (preg_match('/iPhone OS 10/i', $agent)){$os = 'iOS 10';}else if (preg_match('/Mac OS X 10/i', $agent)){$os = 'Mac OS 10';}else if (preg_match('/Ahrefs/i', $agent)){$os = 'Ahrefs SEO 引擎';}else if (preg_match('/JikeSpider/i', $agent)){$os = '即刻引擎';}else if (preg_match('/Googlebot/i', $agent)){$os = '谷歌引擎';}else if(preg_match('/bingbot/i',$agent)){$os = '必应引擎';}else if(preg_match('/iPhone OS 7/i',$agent)){$os = 'iOS 7';}else if(preg_match('/Sogou web spider/i',$agent)){as $ip){  $ip = trim($ip);  if ($ip != 'unknown'){  $realip = $ip;  break;  }  }  }else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown)){  $realip = $_SERVER[              }  }else{  if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown)){  $realip = getenv("HTTP_X_FORWARDED_FOR");  }else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown)){  $realip = getenv("HTTP_CLIENT_IP");  }else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown)){  $realip = getenv("REMOTE_ADDR");  }else{  $realip = $unknown;  }  }  $realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;  return $realip;  }  function GetIpFrom($ip = ''){  if(empty($ip)){  $ip = GetIps();  }$res = @file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);if($res){$json = json_decode($res,true);}else{$json = '';}//var_dump($json);$address[0] = $json['data']['country'].$json['data']['region'].$json['data']['city'].$json['data']['isp'];$address[1] = $ip;return $address;}

上面的函数可以都放在一个公共的文件中,并调用函数

visitor();

即可。其他统计的功能都通过数据库查询统计出来,如:

    #查看pvselect count(*) as pv from visitors;#查看uv、今日ipselect distinct(count(*)) as pv from visitors;...

文章来源: 为自己的站点实现访客统计 - 勿埋我心

为自己的站点实现访客统计相关推荐

  1. 精仿CNZZ网站访客统计系统源码 | 网页访客抓取采集源码 | 网站访客流量统计源码

    源码简介: 仿cnzz多用户统计系统,功能强大,界面完美仿照cnzz统计!支持所有浏览器不乱码,程序是完整,没有删除任何东西,请大家放心使用,想建立自己的统计站点就这么简单! 安装的时候先还原数据库  ...

  2. 用PHP做网站的PV、UV、IP访客统计

    用PHP做网站访客统计,听起来好像有点多此一举,想想有那么多好用的统计工具不用,偏偏想自己写?不过,有时还是按项目需求走吧. 就当我是在废话吧,还是想唠叨一下PV.UV.IP三者的定义与区别. 1.P ...

  3. 访客统计php代码转换图片,PHP实现简单网站访客统计的方法实例

    PHP网站访客统计 一.在网站根目录新建一个名为tongji.php的文件,然后写入以下代码<?php $n=file_get_contents('tongji.txt'); $n++; fil ...

  4. 统计代码放在网站php,网站添加简单访客统计代码

    都知道,网站的来访量的多少只有网站主自己知道,是因为在后台安装统计工具,访客想要知道某个网站有多少来访量怎么办呢?其实还可以通过添加代码在网站的前端显示哦,那么今天明星就来说说网站如何添加访客统计代码 ...

  5. 博客添加音乐插件、网站运行时间、文章阅读次数和网站访客统计

      今天为博客增加了音乐播放插件.博客页脚网站安全运行时间.文章阅读次数以及网站访客统计的功能,接下来进行详细介绍. 博客音乐插件的使用   本博客使用的音乐播放插件为hexo-tag-aplayer ...

  6. 网站如何添加访客统计代码

    都知道,网站的来访量的多少只有网站主自己知道,是因为在后台安装统计工具,访客想要知道某个网站有多少来访量怎么办呢?其实还可以通过添加代码在网站的前端显示哦,那么今天明星就来说说网站如何添加访客统计代码 ...

  7. php实现一个简单的访客统计功能

    文章来源:https://www.zixuephp.net/article-113.html 对我帮助非常大,谢谢 一.文件方式简单统计 用php实现一个简单的访客统计功能,统计网站的总访问量是多少, ...

  8. CSDN访客统计(不用量子恒道)

    一.FlagCounter介绍 想必很多csdner都想对自己的博客进行访客统计,CSDN为博客专家提供了专门的量子恒道统计功能进行访客统计,普通用户无法引入js代码进行访客统计.我们可以换一种思路, ...

  9. Hexo Next主题添加访客统计、访问次数统计、文章阅读次数统计

    Hexo的版本:v3.9.0 Next的版本:v7.4.0 1.打开next主题配置文件\themes\next_config.yml,搜索找到busuanzi_count,把enable设置为tru ...

最新文章

  1. 树莓派避障小车(python)
  2. AutoML的相关链接大全
  3. 在SSH整合过程中:org/hibernate/engine/spi/SharedSessionContractImplementor
  4. 线性代数之行列式基础点
  5. 【论文阅读】A Gentle Introduction to Graph Neural Networks [图神经网络入门](6)
  6. 跟我读论文丨ACL2021 NER BERT化隐马尔可夫模型用于多源弱监督命名实体识别
  7. C语言-函数的指针/函数指针/回调函数
  8. 如何在Visual Studio中切换自动换行?
  9. Java开源测试工具
  10. 高效人士的七个管理习惯
  11. 宝塔linux面板什么用,宝塔面板干什么用的呢?
  12. python中pymysql的小坑
  13. 设计数据库中常见的规范
  14. Oracle 以当前时间为准,取前三个小时后两个小时的分钟枚举
  15. “驱动人生”利用高危漏洞传播病毒
  16. slam十四讲第二版 pdf_聊聊这两年学习slam啃过的书
  17. 2020-10-22OpenCV 获取摄像头并显示摄像头视频
  18. 深度学习笔记一:FCN讲解(转载)
  19. 三维空间中的旋转矩阵
  20. APT攻击各阶段简介

热门文章

  1. android sms 接收短信,Android SMS 短信操作
  2. 抗渗等级p6是什么意思_抗渗等级P6什么意思?
  3. curl伪造ip请求
  4. EntityFramework 的5种状态-简记
  5. 时间序列分类01:人类活动识别深度学习模型综述
  6. 新浪微博开放平台站内应用开发流程直播(一)
  7. Taven教授:解决失眠的好办法
  8. 小米note4退出google账号
  9. 【音频处理】Melodyne 网络缩放功能 ( 音符分离线 | 片段分离线 | 窗口滚动条 | 网格缩放 | 修改图像显示位置 | 显示五线谱 )
  10. C# 中2,10,16进制及其ASCII码之间转化