首页 php教程 php手册 php实现从本网站每天出站连接向目标网站贡献的IP和PV的统计

php实现从本网站每天出站连接向目标网站贡献的IP和PV的统计

Jun 13, 2016 am 10:53 AM
header php 实现 数据库 目标 统计 网站 贡献 连接

存入数据库:

 

    header("Content-type: text/html; charset=utf-8");   

    //echo $_COOKIE['iptag'];  

    date_default_timezone_set('PRC');  

      

    //目标网站url      

    $aimUrl = $_GET['r'];  

    //来源网站  

    $sourceUrl = $_GET['wangzhan'];  

    //设置cookie标识符,目的是防止当产生cookie后用户在点击其他链接,造成的统计不精确  

    $cookieTag = $aimUrl.$sourceUrl;  

    //明天零时的时间戳  

    $nonce_time = strtotime(date('Ymd')+1);  

    setcookie('iptag',$cookieTag,$nonce_time);  

    //获得当前时间,用于数据库查询  

    $time = date('Y-m-d');  

    $db = new MySQLi('localhost','a','acyr','www_a_com');     

    if ($mysqli->connect_errno) {  

       die('数据库连失败:'.$mysqli->connect_error);  

    }  

    $db->query('set names utf8');  

    $sql = "select * from dede_tongji where sourceUrl='$sourceUrl' and aimUrl='$aimUrl' and date='$time'";  

    $res = $db->query($sql);   www.2cto.com

      

    //首先查看现在数据库这一天有没有这个链接的数据,如果没有则创建,否则根据cookie值,来判断IP和Pv的分别增加多少。  

    if ( $row = $res->fetch_assoc() ){  

        $pvSum = $row['pvSum'] + 1;  

        if( $_COOKIE['iptag'] == $cookieTag ){  

            $sql = "update dede_tongji set pvSum = '$pvSum' where sourceUrl='$sourceUrl' and aimUrl='$aimUrl' and date='$time' ";  

            $db->query($sql);     

              

        //否则只是ip 和pv 增加一      

        }else{  

            $ipSum = $row['ipSum'] + 1;  

            $sql = "update dede_tongji set ipSum = '$ipSum',pvSum = '$pvSum' where sourceUrl='$sourceUrl' and aimUrl='$aimUrl' and date='$time' ";  

            $db->query($sql);  

        }  

              

    }else{  

          

        //数据库中没有则添加一条新数据  

        $sql = "insert into dede_tongji (sourceUrl,aimUrl,ipSum,pvSum,date) values ('$sourceUrl','$aimUrl',1,1,'$time')";  

        if( $db->query($sql)){  

        }else{  

            $db->error;  

        }  

 

    }  

    //利用js实现跳转  

    echo "";  

?>  

从数据库中查询,这里使用到了一个分页类在我的令一片博客里大家可以找到,关于这个分页类的用法 结合这个例子和分页类的成员函数可以很好的理解,主要是在进行数据库查询时sql语句带上 limit 限定条件就可以了,用到的分页类是:page.class.php

下面是从数据库中查询前台显示数据和分页类的使用,还有一些控制日期的js

 

    header("Content-type: text/html; charset=utf-8");  

    date_default_timezone_set('PRC');   

    //引入分页类  

    require_once 'page.class.php';   

    //获取变量   

    $wangzhan = emptyempty($_GET['wangzhan']) ? '' : $_GET['wangzhan'];  

    //如果月份和日期小于10则加0 用于数据库日期匹配  

    $mm = $_GET['MM'];  

    $dd = $_GET['DD'];  

    if( $mm

        $mm = '0'.$mm;  

    }  

    if( $dd

        $dd = '0'.$dd;  

    }  

    $date = $_GET['YYYY'].'-'.$mm.'-'.$dd;  

      

    //echo $date;  

    //$time = date('Y-m-d');  

    //echo 'time:'.$time.'
';  

    //echo $date;  

    //exit();  

    //连接数据库  

    $db = new MySQLi('localhost','a','acyr','www_a_com');     

    if ($mysqli->connect_errno) {  

       die('数据库连失败:'.$mysqli->connect_error);  

    }  

    $db->query('set names utf8');  

    //如果现在的查询日期是当前日期,则全部输出且按日期排序  

    if($date==$time){  

        //获得这种情况下的总条数,用于分页显示(分页类要用到这个参数)  

        $sql = "select count(*) from dede_tongji where sourceUrl='$wangzhan' order by date desc";  

        $row = $db->query($sql)->fetch_row();  

        $allRows = $row[0];  //总条数  

        $pageList = new Page($allRows,2,4,array('pre'=>'上一页','next'=>'下一页'));  

        //$res = $db->query( "select * from dede_tongji where sourceUrl='$wangzhan' order by date desc {$pageList->limit()}" );   

        $sql = "select * from dede_tongji where sourceUrl='$wangzhan' order by date desc {$pageList->limit()}";  

        //echo $sql;  

          

        $res = $db->query($sql);  

        $resArr = array();  

        while( $row = $res->fetch_assoc()){  

                $resArr[] = $row;  

        }  

        $res->free_result();  

          

        /*echo '

';  
<p>        var_dump($resArr);  </p>
<p>        foreach( $resArr as $v ){  </p>
<p>            echo  $v['aimUrl'];  </p>
<p>        }*/ </p>
<p>        //print_r($res);  </p>
<p>        //exit();  </p>
<p>    }else{  </p>
<p>        //获得这种情况下的总条数,用于分页显示  </p>
<p>        $sql = "select count(*) from dede_tongji where sourceUrl='$wangzhan' and date='$date'";  </p>
<p>        $row = $db->query($sql)->fetch_row();  </p>
<p>        $allRows = $row[0];  //总条数  </p>
<p>        $pageList = new Page($allRows,2,4,array('pre'=>'上一页','next'=>'下一页'));  </p>
<p>        $sql = "select * from dede_tongji where sourceUrl='$wangzhan' and date='$date' {$pageList->limit()} ";  </p>
<p>        //echo $sql;  </p>
<p>        $res = $db->query($sql);  </p>
<p>        $resArr = array();  </p>
<p>        while( $row = $res->fetch_assoc()){  </p>
<p>                $resArr[] = $row;  </p>
<p>        }  </p>
<p>        $res->free_result();  </p>
<p>        //print_r($res);  </p>
<p>        //exit();  </p>
<p>    }  </p>
<p> </p>
<p>?>  </p>
<p>  </p>
<p>  </p>
<p></p>  
<p><meta http-equiv="Content-Type" content="text/html; charset=utf-8">  </p>
<p></p><title>统计结果</title>  
<p><style type="text/css">  </style></p>
<p>/*头部样式*/ </p>
<p>.top {  </p>
<p>    margin-right: auto;  </p>
<p>    margin-left: auto;  </p>
<p>    width: 800px;  </p>
<p>    margin-top: 100px;  </p>
<p>}  </p>
<p>/*表格样式*/ </p>
<p>table td{  </p>
<p>    border:1px solid #999;  </p>
<p>    padding:0px 5px;  </p>
<p>}  </p>
<p> </p>
<p>/*分页样式*/ </p>
<p>.pagelist{  </p>
<p>    margin-right: auto;  </p>
<p>    margin-left: auto;  </p>
<p>    width: 800px;  </p>
<p>    margin-top: 30px;  </p>
<p>}  </p>
<p>.pagelist a{  </p>
<p>    text-decoration:none;  </p>
<p>    display:block;  </p>
<p>    height:auto;  </p>
<p>    width:auto;  </p>
<p>    float:left;  </p>
<p>    padding:1px 6px;  </p>
<p>    color:#333;  </p>
<p>    margin-right:5px;  </p>
<p>    text-align:center;  </p>
<p>    border:1px solid #CCC;  </p>
<p>}  </p>
<p>.pagelist a:hover{  </p>
<p>    color:#F63;  </p>
<p>}  </p>
<p>.pagelist .alink{  </p>
<p>    text-align:center;  </p>
<p>    width:20px;  </p>
<p>}  </p>
<p>.pagelist strong{  </p>
<p>    text-decoration:none;  </p>
<p>    display:block;  </p>
<p>      </p>
<p>      </p>
<p>    float:left;  </p>
<p>      </p>
<p>    text-align:center;  </p>
<p>    width:20px;  </p>
<p>    padding:1px 6px;  </p>
<p>    border:1px solid #CCC;  </p>
<p>    margin-right:5px;  </p>
<p>    color:#FFF;  </p>
<p>    background:#666;  </p>
<p>}  </p>
<p>.pagelist .sel{  </p>
<p>    width:40px;  </p>
<p>}  </p>
<p>  </p>
<p>  </p>
<p> </p>
<p></p>  
<p></p><div class="top">  
<p><!--下拉框固定焦点-->  </p>
<p><script>  </script></p>
<p><!--  </p>
<p>    function fix(){  </p>
<p>        //alert(&#39;ok!&#39;);  </p>
<p>        document.getElementById(&#39;wangzhan&#39;).options.focus();  </p>
<p>    }  </p>
<p>//-->  </p>
<p>  </p>
<p></p>
<form method="get" action="tongji.php" style="margin-top:10px;" name="'form1'">  
<p>统计网站:<select name="wangzhan" id="'wangzhan'" onchange="fix()">  </select></p>
<p>                <option value="">--请选择--</option>  </p>
<p>                <option value="piaoliang">漂亮网</option>  </p>
<p>                <option value="piaoliang_n">漂亮网_频道</option>  </p>
<p>                <option value="bohe">薄荷网</option>  </p>
<p>                <option value="jianfen">减肥网</option>  </p>
<p>                <option value="tianqi">天气网</option>  </p>
<p>                <option value="nvsheng">女生网</option>              </p>
<p>                   </p>
<p>    查询日期:  </p>
<p>            <select name="'YYYY'" onchange="YYYYDD(this.value)">   </select></p>
<p>            <option value="" selected>请选择 年</option>   </p>
<p>               </p>
<p>            <select name="'MM'" onchange="MMDD(this.value)">   </select></p>
<p>            <option value="">选择 月</option>   </p>
<p>               </p>
<p>            <select name="'DD'">   </select></p>
<p>            <option value="">选择 日</option>   </p>
<p>               </p>
<p> </p>
<p> </p>
<p>    <input type="submit" value="查询">  </p>
<p></p>
</form>  
<p></p>
</div>  
<p></p>
登录后复制
 

 

 

   

 

   

 

   

 

   

 

   

 

 

 

 

 

 

   

 

   

 

   

 

   

 

   

 

 

 

   

统计网站 出站的连接 IP(独立) PV 日期
 

 

   

    if( $wangzhan != '' && isset($resArr[0])){  

        echo $pageList->pre(); echo $pageList->first();echo $pageList->strList();   

        echo $pageList->end();echo $pageList->next();  

        echo "  请选择跳转到第: ";echo $pageList->selectList().' 页';  

    }  

    ?>  

 

  

 

 

 

 最后还有就是数据库表的结构,这样只有一张表 在pv记录上还有一些小误差,因为这里主要是用 cookie控制的时间,所以有误差 如果有高手可以优化数据库设计用ip来控制,能力有限,望大家见谅:

 

CREATE TABLE `dede_tongji` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `sourceUrl` varchar(255) NOT NULL, `aimUrl` varchar(255) NOT NULL, `ipSum` int(10) unsigned NOT NULL, `pvSum` int(10) unsigned NOT NULL, `date` date NOT NULL, 

 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1664
14
CakePHP 教程
1422
52
Laravel 教程
1316
25
PHP教程
1267
29
C# 教程
1239
24
PHP和Python:比较两种流行的编程语言 PHP和Python:比较两种流行的编程语言 Apr 14, 2025 am 12:13 AM

PHP和Python各有优势,选择依据项目需求。1.PHP适合web开发,尤其快速开发和维护网站。2.Python适用于数据科学、机器学习和人工智能,语法简洁,适合初学者。

PHP行动:现实世界中的示例和应用程序 PHP行动:现实世界中的示例和应用程序 Apr 14, 2025 am 12:19 AM

PHP在电子商务、内容管理系统和API开发中广泛应用。1)电子商务:用于购物车功能和支付处理。2)内容管理系统:用于动态内容生成和用户管理。3)API开发:用于RESTfulAPI开发和API安全性。通过性能优化和最佳实践,PHP应用的效率和可维护性得以提升。

PHP:网络开发的关键语言 PHP:网络开发的关键语言 Apr 13, 2025 am 12:08 AM

PHP是一种广泛应用于服务器端的脚本语言,特别适合web开发。1.PHP可以嵌入HTML,处理HTTP请求和响应,支持多种数据库。2.PHP用于生成动态网页内容,处理表单数据,访问数据库等,具有强大的社区支持和开源资源。3.PHP是解释型语言,执行过程包括词法分析、语法分析、编译和执行。4.PHP可以与MySQL结合用于用户注册系统等高级应用。5.调试PHP时,可使用error_reporting()和var_dump()等函数。6.优化PHP代码可通过缓存机制、优化数据库查询和使用内置函数。7

PHP的持久相关性:它还活着吗? PHP的持久相关性:它还活着吗? Apr 14, 2025 am 12:12 AM

PHP仍然具有活力,其在现代编程领域中依然占据重要地位。1)PHP的简单易学和强大社区支持使其在Web开发中广泛应用;2)其灵活性和稳定性使其在处理Web表单、数据库操作和文件处理等方面表现出色;3)PHP不断进化和优化,适用于初学者和经验丰富的开发者。

PHP与其他语言:比较 PHP与其他语言:比较 Apr 13, 2025 am 12:19 AM

PHP适合web开发,特别是在快速开发和处理动态内容方面表现出色,但不擅长数据科学和企业级应用。与Python相比,PHP在web开发中更具优势,但在数据科学领域不如Python;与Java相比,PHP在企业级应用中表现较差,但在web开发中更灵活;与JavaScript相比,PHP在后端开发中更简洁,但在前端开发中不如JavaScript。

PHP和Python:代码示例和比较 PHP和Python:代码示例和比较 Apr 15, 2025 am 12:07 AM

PHP和Python各有优劣,选择取决于项目需求和个人偏好。1.PHP适合快速开发和维护大型Web应用。2.Python在数据科学和机器学习领域占据主导地位。

PHP与Python:核心功能 PHP与Python:核心功能 Apr 13, 2025 am 12:16 AM

PHP和Python各有优势,适合不同场景。1.PHP适用于web开发,提供内置web服务器和丰富函数库。2.Python适合数据科学和机器学习,语法简洁且有强大标准库。选择时应根据项目需求决定。

PHP和Python:解释了不同的范例 PHP和Python:解释了不同的范例 Apr 18, 2025 am 12:26 AM

PHP主要是过程式编程,但也支持面向对象编程(OOP);Python支持多种范式,包括OOP、函数式和过程式编程。PHP适合web开发,Python适用于多种应用,如数据分析和机器学习。

See all articles