Piwik收集IP信息的二次开发

桐一个世界 发布于 2015/03/06 17:12
阅读 1K+
收藏 2

请问:我想实现IP地址的真实显示,看了这段代码,不知道怎么用?

这段代码,我该怎么实现,在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']);

                            

                        }

                    }

加载中
返回顶部
顶部