快捷导航
鸿蒙互联网 index 新闻频道 查看内容

鸿蒙互联网 | 收集整理的php访客统计代码

2019-11-3 15:36| 发布者: byzps| 查看: 12| 评论: 0|原作者: byzps

摘要: 最简单的方法便是使用平台的统计功能,比如cnzz,百度统计等等平台,但这篇文章的重点是自己写代码实现统计功能 一、文件方式简单统计用php实现一个简单的访客统计功能,统计网站的总访问量是多少,简单实用。php通 ...
最简单的方法便是使用平台的统计功能,比如cnzz,百度统计等等平台,但这篇文章的重点是自己写代码实现统计功能

一、文件方式简单统计
用php实现一个简单的访客统计功能,统计网站的总访问量是多少,简单实用。php通过每次打开文本文件,获取文本中的数字,进行加1再写入到文本中。所以只要每次有访问就会进行累加pv数量来实现的简单访客次数的统计。
  1.   <?php
  2.         if(!file_exists("count.txt")){
  3.             $one_file=fopen("count.txt","w+"); //建立一个统计文本,如果不存在就创建
  4.             echo"您是第<font color='red'><b>1</b></font>位访客"; //首次直接输出第一次
  5.             fwrite("count.txt","1");  //把数字1写入文本
  6.             fclose("$one_file");
  7.          }else{ //如果不是第一次访问直接读取内容,并+1,写入更新后再显示新的访客数
  8.             $num=file_get_contents("count.txt");
  9.             $num++;
  10.             file_put_contents("count.txt","$num");
  11.             $newnum=);
  12.                 $newnum=file_get_contents("count.txt");
  13.                 echo"您是第<font color='red'><b>".$newnum."</b></font>位访客";
  14.                 setcookie("access",1, time()+3600*24);//访问过标记
  15.             }
  16.         }
  17.     ?>
复制代码
二、获取详细信息统计
在网站的一个公共文件中,进行每次访问时获取用户的ip、浏览器类型、系统类型、访问时间、访问当前地址、访问来源、ip对属地信息的统计。通过这些信息就能大致知道哪个地方访问人数最大、哪篇文章访问人数最大、今日访问人数、pv、恶意访问ip等信息就都出来了。
1.数据库表结构:
  1.     CREATE TABLE `visitors` (
  2.       `id` int(10) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',
  3.       `ip` char(30) DEFAULT NULL COMMENT 'ip地址',
  4.       `froms` char(100) DEFAULT NULL COMMENT '归属地',
  5.       `add_time` datetime NOT NULL COMMENT '添加时间',
  6.       `system` char(60) DEFAULT NULL COMMENT '操作系统',
  7.       `browser` char(200) DEFAULT NULL COMMENT '浏览器',
  8.       `pageview` char(200) DEFAULT NULL COMMENT '受访页面',
  9.       `source_link` varchar(1000) DEFAULT NULL COMMENT '来源链接',
  10.       PRIMARY KEY (`id`),
  11.       KEY `ip` (`ip`),
  12.       KEY `add_time` (`add_time`)
  13.     ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='访客表';
复制代码
2.php统计代码
在一个公共php文件中放置获取信息代码,并写入到数据库中。
  1.   //获取访客信息
  2.     //pdo连接数据库
  3.     $db_ms='mysql';
  4.     $db_host='127.0.0.1';
  5.     $db_user='root';
  6.     $db_pass='123456';
  7.     $db_name='test';
  8.     $dbh=$db_ms.':host='.$db_host.';'.'dbname='.$db_name;
  9.     try{
  10.        $dbh = new PDO($dbh,$db_user,$db_pass);
  11.        //echo '连接成功';
  12.        $dbh -> query('set names utf8');
  13.     }catch(PDOException $e){
  14.        die('error:'.$e->getMessage());
  15.     }
  16.      
  17.     function visitor(){
  18.         global $dbh;
  19.         #当前url
  20.         $url=$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
  21.         #获取ip和来源
  22.         $address = GetIpFrom();
  23.         $froms = $address[0];
  24.         $ip = $address[1];
  25.         #获取浏览器和系统类型
  26.         $broswer = get_broswer();
  27.         $os = get_os();
  28.         
  29.         #获取最后来源地址
  30.         if(empty($_SERVER['HTTP_REFERER'])){
  31.             $source_link = $url;
  32.         }else{
  33.             $source_link = $_SERVER['HTTP_REFERER'];
  34.         }
  35.         
  36.         #限制ip访问次数
  37.         $sqlco = "select count(id) as num FROM visitors where ip ="."'".$ip."'"." AND add_time>="."'".date('Y-m-d',time())."'";
  38.      
  39.         $cres = $dbh -> query($sqlco);
  40.         $vnum = $cres -> fetch();
  41.      
  42.         if($vnum['num']>10000){
  43.             exit('Sorry... You visited the number more than 10000 times today, and the access denied!');
  44.         }
  45.         #获取到的信息放入数据库
  46.         $sql =" INSERT INTO visitors (ip,froms,add_time,system,browser,pageview,source_link) VALUES ('$ip','$froms',now(),'$os','$broswer','$url','$source_link')";
  47.         $dbh -> exec($sql);
  48.     }
复制代码
浏览器信息和ip信息获取函数:
  1.     //获取浏览器信息
  2.     function get_broswer(){
  3.         $sys = $_SERVER['HTTP_USER_AGENT'];  //获取用户代理字符串
  4.         if (stripos($sys, "Firefox/") > 0) {
  5.             preg_match("/Firefox\/([^;)]+)+/i", $sys, $b);
  6.             $exp[0] = "Firefox";
  7.             $exp[1] = $b[1];  //获取火狐浏览器的版本号
  8.         } elseif (stripos($sys, "Maxthon") > 0) {
  9.             preg_match("/Maxthon\/([\d\.]+)/", $sys, $aoyou);
  10.             $exp[0] = "傲游";
  11.             $exp[1] = $aoyou[1];
  12.         } elseif (stripos($sys, "Baiduspider") > 0) {
  13.             $exp[0] = "百度";
  14.             $exp[1] = '蜘蛛';
  15.         }elseif (stripos($sys, "YisouSpider") > 0) {
  16.             $exp[0] = "一搜";
  17.             $exp[1] = '蜘蛛';
  18.         }elseif (stripos($sys, "Googlebot") > 0) {
  19.             $exp[0] = "谷歌";
  20.             $exp[1] = '蜘蛛';
  21.         }elseif (stripos($sys, "Android 4.3") > 0) {
  22.             $exp[0] = "安卓";
  23.             $exp[1] = '4.3';
  24.         }
  25.         elseif (stripos($sys, "MSIE") > 0) {
  26.             preg_match("/MSIE\s+([^;)]+)+/i", $sys, $ie);
  27.             $exp[0] = "IE";
  28.             $exp[1] = $ie[1];  //获取IE的版本号
  29.         } elseif (stripos($sys, "OPR") > 0) {
  30.             preg_match("/OPR\/([\d\.]+)/", $sys, $opera);
  31.             $exp[0] = "Opera";
  32.             $exp[1] = $opera[1];
  33.         } elseif(stripos($sys, "Edge") > 0) {
  34.             //win10 Edge浏览器 添加了chrome内核标记 在判断Chrome之前匹配
  35.             preg_match("/Edge\/([\d\.]+)/", $sys, $Edge);
  36.             $exp[0] = "Edge";
  37.             $exp[1] = $Edge[1];
  38.         } elseif (stripos($sys, "Chrome") > 0) {
  39.             preg_match("/Chrome\/([\d\.]+)/", $sys, $google);
  40.             $exp[0] = "Chrome";
  41.             $exp[1] = $google[1];  //获取google chrome的版本号
  42.         } elseif(stripos($sys,'rv:')>0 && stripos($sys,'Gecko')>0){
  43.             preg_match("/rv:([\d\.]+)/", $sys, $IE);
  44.             $exp[0] = "IE";
  45.             $exp[1] = $IE[1];
  46.         }else if(stripos($sys,'AhrefsBot')>0){
  47.             $exp[0] = "AhrefsBot";
  48.             $exp[1] = '蜘蛛';
  49.         }else if(stripos($sys,'Safari')>0){
  50.             preg_match("/([\d\.]+)/", $sys, $safari);
  51.             $exp[0] = "Safari";
  52.             $exp[1] = $safari[1];
  53.         }else if(stripos($sys,'bingbot')>0){
  54.             $exp[0] = "必应";
  55.             $exp[1] = '蜘蛛';
  56.         }else if(stripos($sys,'WinHttp')>0){
  57.             $exp[0] = "windows";
  58.             $exp[1] = 'WinHttp 请求接口工具';
  59.         }else if(stripos($sys,'iPhone OS 10')>0){
  60.             $exp[0] = "iPhone";
  61.             $exp[1] = 'OS 10';
  62.         }else if(stripos($sys,'Sogou')>0){
  63.             $exp[0] = "搜狗";
  64.             $exp[1] = '蜘蛛';
  65.         }else if(stripos($sys,'HUAWEIM')>0){
  66.             $exp[0] = "华为";
  67.             $exp[1] = '手机端';
  68.         }else if(stripos($sys,'Dalvik')>0){
  69.             $exp[0] = "安卓";
  70.             $exp[1] = 'Dalvik虚拟机';
  71.         }else if(stripos($sys,'Mac OS X 10')>0){
  72.             $exp[0] = "MAC";
  73.             $exp[1] = 'OS X10';
  74.         }else if(stripos($sys,'Opera/9.8')>0){
  75.             $exp[0] = "Opera";
  76.             $exp[1] = '9.8';
  77.         }else if(stripos($sys,'JikeSpider')>0){
  78.             $exp[0] = "即刻";
  79.             $exp[1] = '蜘蛛';
  80.         }else if(stripos($sys,'Baiduspider')>0){
  81.             $exp[0] <(preg_match('/win/i', $agent) && strpos($agent, '95'))
  82.         {
  83.             $os = 'Windows 95';
  84.         }
  85.         else if (preg_match('/win 9x/i', $agent) && strpos($agent, '4.90'))
  86.         {
  87.             $os = 'Windows ME';
  88.         }
  89.         else if (preg_match('/win/i', $agent) && preg_match('/98/i', $agent))
  90.         {
  91.             $os = 'Windows 98';
  92.         }
  93.         else if (preg_match('/win/i', $agent) && preg_match('/nt 6.0/i', $agent))
  94.         {
  95.             $os = 'Windows Vista';
  96.         }
  97.         else if (preg_match('/win/i', $agent) && preg_match('/nt 6.1/i', $agent))
  98.         {
  99.             $os = 'Windows 7';
  100.         }
  101.         else if (preg_match('/win/i', $agent) && preg_match('/nt 6.2/i', $agent))
  102.         {
  103.             $os = 'Windows 8';
  104.         }else if(preg_match('/win/i', $agent) && preg_match('/nt 10.0/i', $agent))
  105.         {
  106.             $os = 'Windows 10';#添加win10判断
  107.         }else if (preg_match('/win/i', $agent) && preg_match('/nt 5.1/i', $agent))
  108.         {
  109.             $os = 'Windows XP';
  110.         }
  111.         else if (preg_match('/win/i', $agent) && preg_match('/nt 5/i', $agent))
  112.         {
  113.             $os = 'Windows 2000';
  114.         }
  115.         else if (preg_match('/win/i', $agent) && preg_match('/nt/i', $agent))
  116.         {
  117.             $os = 'Windows NT';
  118.         }
  119.         else if (preg_match('/win/i', $agent) && preg_match('/32/i', $agent))
  120.         {
  121.             $os = 'Windows 32';
  122.         }
  123.         else if (preg_match('/linux/i', $agent))
  124.         {
  125.             $os = 'Linux';
  126.         }
  127.         else if (preg_match('/unix/i', $agent))
  128.         {
  129.             $os = 'Unix';
  130.         }
  131.         else if (preg_match('/sun/i', $agent) && preg_match('/os/i', $agent))
  132.         {
  133.             $os = 'SunOS';
  134.         }
  135.         else if (preg_match('/ibm/i', $agent) && preg_match('/os/i', $agent))
  136.         {
  137.             $os = 'IBM OS/2';
  138.         }
  139.         else if (preg_match('/Mac/i', $agent) && preg_match('/PC/i', $agent))
  140.         {
  141.             $os = 'Macintosh';
  142.         }
  143.         else if (preg_match('/PowerPC/i', $agent))
  144.         {
  145.             $os = 'PowerPC';
  146.         }
  147.         else if (preg_match('/AIX/i', $agent))
  148.         {
  149.             $os = 'AIX';
  150.         }
  151.         else if (preg_match('/HPUX/i', $agent))
  152.         {
  153.             $os = 'HPUX';
  154.         }
  155.         else if (preg_match('/NetBSD/i', $agent))
  156.         {
  157.             $os = 'NetBSD';
  158.         }
  159.         else if (preg_match('/BSD/i', $agent))
  160.         {
  161.             $os = 'BSD';
  162.         }
  163.         else if (preg_match('/OSF1/i', $agent))
  164.         {
  165.             $os = 'OSF1';
  166.         }
  167.         else if (preg_match('/IRIX/i', $agent))
  168.         {
  169.             $os = 'IRIX';
  170.         }
  171.         else if (preg_match('/FreeBSD/i', $agent))
  172.         {
  173.             $os = 'FreeBSD';
  174.         }
  175.         else if (preg_match('/teleport/i', $agent))
  176.         {
  177.             $os = 'teleport';
  178.         }
  179.         else if (preg_match('/flashget/i', $agent))
  180.         {
  181.             $os = 'flashget';
  182.         }
  183.         else if (preg_match('/webzip/i', $agent))
  184.         {
  185.             $os = 'webzip';
  186.         }
  187.         else if (preg_match('/offline/i', $agent))
  188.         {
  189.             $os = 'offline';
  190.         }else if (preg_match('/iPhone OS 8/i', $agent))
  191.         {
  192.             $os = 'iOS 8';
  193.         }else if (preg_match('/YisouSpider/i', $agent))
  194.         {
  195.             $os = '一搜引擎';
  196.         }else if (preg_match('/Yahoo! Slurp/i', $agent))
  197.         {
  198.             $os = '雅虎引擎';
  199.         }else if (preg_match('/iPhone OS 6/i', $agent))
  200.         {
  201.             $os = 'iOS 6';
  202.         }
  203.         else if (preg_match('/Baiduspider/i', $agent))
  204.         {
  205.             $os = '百度引擎';
  206.         }else if (preg_match('/iPhone OS 10/i', $agent))
  207.         {
  208.             $os = 'iOS 10';
  209.         }else if (preg_match('/Mac OS X 10/i', $agent))
  210.         {
  211.             $os = 'Mac OS 10';
  212.         }
  213.         else if (preg_match('/Ahrefs/i', $agent))
  214.         {
  215.             $os = 'Ahrefs SEO 引擎';
  216.         }
  217.         else if (preg_match('/JikeSpider/i', $agent))
  218.         {
  219.             $os = '即刻引擎';
  220.         }else if (preg_match('/Googlebot/i', $agent))
  221.         {
  222.             $os = '谷歌引擎';
  223.         }else if(preg_match('/bingbot/i',$agent)){
  224.             $os = '必应引擎';
  225.         }else if(preg_match('/iPhone OS 7/i',$agent)){
  226.             $os = 'iOS 7';
  227.         }else if(preg_match('/Sogou web spider/i',$agent)){as $ip){  
  228.                       $ip = trim($ip);  
  229.                       if ($ip != 'unknown'){  
  230.                           $realip = $ip;  
  231.                           break;  
  232.                       }  
  233.                   }  
  234.               }else if(isset($_SERVER['HTTP_CLIENT_IP']) && !empty($_SERVER['HTTP_CLIENT_IP']) && strcasecmp($_SERVER['HTTP_CLIENT_IP'], $unknown)){  
  235.                   $realip = $_SERVER[              }  
  236.           }else{  
  237.               if(getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(getenv('HTTP_X_FORWARDED_FOR'), $unknown)){  
  238.                   $realip = getenv("HTTP_X_FORWARDED_FOR");  
  239.               }else if(getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), $unknown)){  
  240.                   $realip = getenv("HTTP_CLIENT_IP");  
  241.               }else if(getenv('REMOTE_ADDR') && strcasecmp(getenv('REMOTE_ADDR'), $unknown)){  
  242.                   $realip = getenv("REMOTE_ADDR");  
  243.               }else{  
  244.                   $realip = $unknown;  
  245.               }  
  246.           }  
  247.           $realip = preg_match("/[\d\.]{7,15}/", $realip, $matches) ? $matches[0] : $unknown;  
  248.           return $realip;  
  249.       }  
  250.         
  251.       function GetIpFrom($ip = ''){  
  252.           if(empty($ip)){  
  253.               $ip = GetIps();  
  254.           }
  255.      
  256.      
  257.          $res = @file_get_contents('http://ip.taobao.com/service/getIpInfo.php?ip='.$ip);
  258.      
  259.           if($res){
  260.               $json = json_decode($res,true);
  261.           }else{
  262.               $json = '';
  263.           }
  264.      
  265.           //var_dump($json);
  266.      
  267.           $address[0] = $json['data']['country'].$json['data']['region'].$json['data']['city'].$json['data']['isp'];
  268.     $address[1] = $ip;
  269.      
  270.     return $address;
  271.       }
复制代码
上面的函数可以都放在一个公共的文件中,并调用函数
  1. visitor();
复制代码
即可。其他统计的功能都通过数据库查询统计出来,如:
  1.    #查看pv
  2.     select count(*) as pv from visitors;
  3.     #查看uv、今日ip
  4.     select distinct(count(*)) as pv from visitors;
  5.     ...
复制代码


鲜花

握手

雷人

路过

鸡蛋

最新评论

相关分类

让创业更简单

  • 反馈建议:byzps@qq.com
  • 客服电话:15573841933
  • 工作时间:周一到周五

云服务支持

精彩文章,快速检索

关注我们

Copyright 鸿蒙 - 期待你的加入~  技术支持:©  子维工作室    ( 渝ICP备19008507号 )