Php 谷歌分析服务器端跟踪

Php 谷歌分析服务器端跟踪,php,google-analytics,Php,Google Analytics,Google Analytics只需将其源代码放在我的网站上,就可以自动跟踪我过去需要的一切(页面浏览量、唯一访客) 但是现在,我需要跟踪事件,唯一的方法是在服务器端进行跟踪。每次任何用户执行我需要跟踪的特定操作时,服务器都会将数据发布到google以跟踪信息,如下所述: 它确实非常完美,但是,自从我意识到,我现在收到了很多来自西班牙的访问,比来自美国的访问量翻了一番。在我实施活动跟踪之前,西班牙甚至还没有进入前10名国家 今天我意识到我的服务器在西班牙,这可能是问题的根源 如何跟踪事件,而不

Google Analytics只需将其源代码放在我的网站上,就可以自动跟踪我过去需要的一切(页面浏览量、唯一访客)

但是现在,我需要跟踪事件,唯一的方法是在服务器端进行跟踪。每次任何用户执行我需要跟踪的特定操作时,服务器都会将数据发布到google以跟踪信息,如下所述:

它确实非常完美,但是,自从我意识到,我现在收到了很多来自西班牙的访问,比来自美国的访问量翻了一番。在我实施活动跟踪之前,西班牙甚至还没有进入前10名国家

今天我意识到我的服务器在西班牙,这可能是问题的根源

如何跟踪事件,而不将其计入页面浏览

$url = 'http://www.google-analytics.com/collect';
$data = array('v' => '1', 'tid' => 'UA-HIDDEN-1', 'cid' => $_SERVER["REMOTE_ADDR"], 'ni' => '1', 't' => 'event', 'ec' => '', 'ea' => 'JUMP', 'el' => '');
$options = array(
    'http' => array(
        'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
        'method'  => 'POST',
        'content' => http_build_query($data),
    ),
);
$context  = stream_context_create($options);
$result = file_get_contents($url, false, $context);

非常感谢

事件本身不是页面视图。请参阅:

您需要从正常的ga.js客户端代码中跟踪事件服务器端和页面浏览量的具体原因是什么

如果您不知道,您可以轻松地从客户端跟踪事件:

假设您需要在服务器端保留事件和页面视图:

<?php
  //Put SERVER_ADDR into a var
  $request_ip = $_SERVER['REMOTE_ADDR'];

  // Put any server IPs you need to filter out below in an array
  $localhosts = array('127.0.0.1','192.168.15.1','10.1.10.1');

  // Use this later
  $url = 'http://www.google-analytics.com/collect';
最后,我们已经建立了一个事件列表,我们可以在流控制中使用现有的页面浏览、用户计时、事件等代码。要有创意

  foreach($actions as $action){
       $data = null; $options=null;

       if($handle_myServer){
         $someFlagForGA = 'RequestFromSpainServer';
       }


       if($action == 'event'){
          $data = array('v' => '1'
                     , 'tid' => 'UA-HIDDEN-1', 
                     ,'cid' => $request_ip
                     ,'ni' => '1'
                     , 't' => 'event'
                     , 'ec' => $someFlagForGA, 
                     ,'ea' => 'JUMP', 'el' => ''
                     );
       } elseif($action == 'pageview'){
            $data = array('v' => '1', 'tid' => 'UA-HIDDEN-1'
                     , 't' => 'pageview'
                     , 'dh'=> 'yourGAenabledDomainHere.com'  
                     , 'dp'=> 'ViewedPage.html'
                     , 'dt'=> 'homepage'.' SERVER VISITED '.$someFlagForGA
                     );
       } else {
         // Do whatever else
       }

     // Would be better to do below with a single function 

       $options = array(
          'http' => array(
          'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
          'method'  => 'POST',
          'content' => http_build_query($data),
        ) ,$data);


        $context  = stream_context_create($options);

        $result = file_get_contents($url, false, $context) or die('Error!!');

   }
?>

事件本身不是页面视图。请参阅:

您需要从正常的ga.js客户端代码中跟踪事件服务器端和页面浏览量的具体原因是什么

如果您不知道,您可以轻松地从客户端跟踪事件:

假设您需要在服务器端保留事件和页面视图:

<?php
  //Put SERVER_ADDR into a var
  $request_ip = $_SERVER['REMOTE_ADDR'];

  // Put any server IPs you need to filter out below in an array
  $localhosts = array('127.0.0.1','192.168.15.1','10.1.10.1');

  // Use this later
  $url = 'http://www.google-analytics.com/collect';
最后,我们已经建立了一个事件列表,我们可以在流控制中使用现有的页面浏览、用户计时、事件等代码。要有创意

  foreach($actions as $action){
       $data = null; $options=null;

       if($handle_myServer){
         $someFlagForGA = 'RequestFromSpainServer';
       }


       if($action == 'event'){
          $data = array('v' => '1'
                     , 'tid' => 'UA-HIDDEN-1', 
                     ,'cid' => $request_ip
                     ,'ni' => '1'
                     , 't' => 'event'
                     , 'ec' => $someFlagForGA, 
                     ,'ea' => 'JUMP', 'el' => ''
                     );
       } elseif($action == 'pageview'){
            $data = array('v' => '1', 'tid' => 'UA-HIDDEN-1'
                     , 't' => 'pageview'
                     , 'dh'=> 'yourGAenabledDomainHere.com'  
                     , 'dp'=> 'ViewedPage.html'
                     , 'dt'=> 'homepage'.' SERVER VISITED '.$someFlagForGA
                     );
       } else {
         // Do whatever else
       }

     // Would be better to do below with a single function 

       $options = array(
          'http' => array(
          'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
          'method'  => 'POST',
          'content' => http_build_query($data),
        ) ,$data);


        $context  = stream_context_create($options);

        $result = file_get_contents($url, false, $context) or die('Error!!');

   }
?>

事件本身不是页面视图。请参阅:

您需要从正常的ga.js客户端代码中跟踪事件服务器端和页面浏览量的具体原因是什么

如果您不知道,您可以轻松地从客户端跟踪事件:

假设您需要在服务器端保留事件和页面视图:

<?php
  //Put SERVER_ADDR into a var
  $request_ip = $_SERVER['REMOTE_ADDR'];

  // Put any server IPs you need to filter out below in an array
  $localhosts = array('127.0.0.1','192.168.15.1','10.1.10.1');

  // Use this later
  $url = 'http://www.google-analytics.com/collect';
最后,我们已经建立了一个事件列表,我们可以在流控制中使用现有的页面浏览、用户计时、事件等代码。要有创意

  foreach($actions as $action){
       $data = null; $options=null;

       if($handle_myServer){
         $someFlagForGA = 'RequestFromSpainServer';
       }


       if($action == 'event'){
          $data = array('v' => '1'
                     , 'tid' => 'UA-HIDDEN-1', 
                     ,'cid' => $request_ip
                     ,'ni' => '1'
                     , 't' => 'event'
                     , 'ec' => $someFlagForGA, 
                     ,'ea' => 'JUMP', 'el' => ''
                     );
       } elseif($action == 'pageview'){
            $data = array('v' => '1', 'tid' => 'UA-HIDDEN-1'
                     , 't' => 'pageview'
                     , 'dh'=> 'yourGAenabledDomainHere.com'  
                     , 'dp'=> 'ViewedPage.html'
                     , 'dt'=> 'homepage'.' SERVER VISITED '.$someFlagForGA
                     );
       } else {
         // Do whatever else
       }

     // Would be better to do below with a single function 

       $options = array(
          'http' => array(
          'header'  => "Content-type: application/x-www-form-urlencoded\r\n",
          'method'  => 'POST',
          'content' => http_build_query($data),
        ) ,$data);


        $context  = stream_context_create($options);

        $result = file_get_contents($url, false, $context) or die('Error!!');

   }
?>

您将IP地址作为客户端id发送,这是错误的。首先,客户机id是假定的。其次,分析无法识别这些事件是否属于现有用户

您需要获取网页上现有用户的现有客户端id:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
然后将其发送回服务器并在请求中使用(1)。目前GA无法分配正确的地理信息,因为事件不属于发起事件的用户的会话(这很可能也会影响一些其他指标)

(1) 您也可以阅读PHP中的GA cookie,但Google建议您不要这样做,因为cookie格式可能会在没有通知的情况下更改。即使cookie格式发生更改,上面的脚本也将始终返回正确的客户端id

更新:我已经阅读了更多的文档,虽然我的答案似乎仍然有点相关,但对于实际用例来说可能是错误的-地理位置由IP决定,服务器端脚本仍将发送服务器IP。所以很可能(还没有做过科学研究)这看起来像一个访问者拥有两个设备,而不是一个访问者

更新2:显然现在可以将用户IP地址作为参数,所以这个答案可能不再相关


,可能会有帮助。

您将IP地址作为客户端id发送,这是错误的。首先,客户机id是假定的。其次,分析无法识别这些事件是否属于现有用户

您需要获取网页上现有用户的现有客户端id:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
然后将其发送回服务器并在请求中使用(1)。目前GA无法分配正确的地理信息,因为事件不属于发起事件的用户的会话(这很可能也会影响一些其他指标)

(1) 您也可以阅读PHP中的GA cookie,但Google建议您不要这样做,因为cookie格式可能会在没有通知的情况下更改。即使cookie格式发生更改,上面的脚本也将始终返回正确的客户端id

更新:我已经阅读了更多的文档,虽然我的答案似乎仍然有点相关,但对于实际用例来说可能是错误的-地理位置由IP决定,服务器端脚本仍将发送服务器IP。所以很可能(还没有做过科学研究)这看起来像一个访问者拥有两个设备,而不是一个访问者

更新2:显然现在可以将用户IP地址作为参数,所以这个答案可能不再相关


,可能会有帮助。

您将IP地址作为客户端id发送,这是错误的。首先,客户机id是假定的。其次,分析无法识别这些事件是否属于现有用户

您需要获取网页上现有用户的现有客户端id:

ga(function(tracker) {
  var clientId = tracker.get('clientId');
});
然后将其发送回服务器并在请求中使用(1)。目前GA无法分配正确的地理信息,因为事件不属于发起事件的用户的会话(这很可能也会影响一些其他指标)

(1) 您也可以阅读PHP中的GA cookie,但Google建议您不要这样做,因为cookie格式可能会在没有通知的情况下更改。即使cookie格式发生更改,上面的脚本也将始终返回正确的客户端id

更新:我已经阅读了更多的文档,虽然我的答案似乎仍然有些相关,但对于实际用例来说可能是错误的-地理位置由IP和t决定