Piwik收集IP信息的二次开发,piwikip二次开发



1,在应用技术方面:分析技术主要有:HTTP协议头信息技术,第一方COOKIE,第三方COOKIE,P3P协议COOKIE,LSO技术以及Web Beacons和javascript技术。

2,系统核心工作流程:

    1,访问者通过浏览器向用户服务器发送请求。

    2,门户服务器响应请求,返回预先设置了Piwik的跟踪代码页面,

    3,客户端浏览器执行TAG标记,向Piwik请求数据获取的js代码。

    4,Piwik服务器响应请求,返回用于收集网页,浏览器和Cookie信息的js代码。

    5,客户端浏览器执行js代码,发送相关网页被访问的行为数据给Piwik服务器。

    6,Piwik服务器产生点击流日志,保存于后台数据库中,用来日后做分析。

   Piwik收集的信息有:被系统屏蔽后的IP地址信息,访问来源链接,第一次访问网站时间,累计页面浏览数,和第几次来访问数据等。

    由于Piwik比较主用用户隐私,对IP信息进行了屏蔽,这也是Piwik的不足之处,为了精准定位访问人群,我们可以对Piwik进行二次开发。

    Piwik收集IP信息的二次开发:

        (1)Piwik后台数据库改造

            Piwik将用户的访问时间信息,访问事件和浏览器的环境等信息记录载mysql的piwik_log_visit表中,我们可以添加一个ipinfo 字段来存放用户的真实地址。

            alter table piwik_log_visit add column `ipinfo` char(20) not null default 0 after location_provider

        (2)新建一个获取IP信息的类:piwik提供插件扩展功能的方法,所有的二次开发类必须遵守次方法。

            具体步骤:

                1,在Piwik的plugins方法中建立ipinfo.php扩展类,此类继承Piwik_Plugin类,重写Piwik_Plugin中getListHooksRegistered方法,获取已经注册的Tracker.Visit.setVisitorIp钩子。注意:钩子(hook)在wordpress 中也有提到。将此钩子绑定一个方法来获取ip信息,将IP信息存入Piwik_log_visit表的ipinfo字段中。

                ipinfo.php 部分代码:

                    class ipinfo extends Piwik_Plugin {

                        public function getListHooksRegistered() {

                                //注册一个Tracker.Visit.setVisitorIp钩子类获取IP信息。

                                return array('Tracker.Visit.setVisitorIp'=>setVisitorIpAddress);

                        }


                        static public function applyIPMash($ip,$maskLength) {

                            //解开屏蔽ip信息

                             $i = Piwik_Common:strlen($ip);

                            if($maskLength > $i) {

                                $maskLength = $i;

                            }

                            while($maskLegth -- >0) {

                                    $ip[--$i] = chr(0);

                            }

                            return $ip;

                        }

                        function setVisitorIpAddress($notifiaction) {

                            //奖励与Tracker.Visit.setVisitorIp钩子的绑定方法。

                            $ip = &$notification ->getNotificationObject();

                            //得到的参数引用相关联的钩子

                            $ip = self::applyIPMask($ip,Piwik_Tracker_Config::getInstance()->Tracker['ip_address_mask_length']);

                            

                        }

                    }

                    

                

                Piwik_Plugin.php文件位置:安装目录/core/Plugin.php中。此类为抽象类,有兴趣的可以自行查阅。

相关内容

    暂无相关文章