Google 分析 PHP(发送信息)

Google Analytics PHP (Sending information)

主要思想

我正在做一个项目,我需要使用 Google Analytics 服务器端。我不需要检索信息,但我需要发送信息。我最终可以发送 js 脚本客户端,但在这种情况下,它不是一个选项。

下面的大部分链接真的很老了。 2012~

正在检索 - 不是我需要的

我阅读了多个 Whosebug post,但它们只提到了检索信息的方法。

PHP API for Google Analytics(SO)

发送 - 我需要的

有一个 post 谈论发送信息,但 GitHub 已被该库弃用。

Google Analytics PHP API Redirect URI (SO)

Google api php client(GOOGLE)

问题

如何将信息发送到我在 PHP 中的 Google Analytics 帐户?谢谢

您通过 Measurement Protocol 发送数据。不需要特殊的库或开发工具包,您只需将参数附加到 GA 端点并通过 Curl/fopen/sockets/whatever 将它们发送到 Google Analytics。

每个调用至少包括您要向其发送数据的帐户的 ID,一个允许将交互分组到会话中的客户端 ID(因此每个访问者应该是唯一的,但不能识别用户个人) 、交互类型(页面浏览、事件、计时等,某些交互类型需要额外的参数)和您使用的协议版本(目前只有一个版本)。

因此,记录综合浏览量的最基本示例如下所示:

www.google-analytics.com/collect/v=1&tid=UA-XXXXY&cid=555&t=pageview&dp=%2Fmypage

小心点... Google 能够使用 cookie 和浏览器功能检索有关用户代理、位置、ip、活动、语言等的大量用户信息。 因此,所有命令通常都使用客户端 js 脚本发送。 如果您想在服务器端工作,您必须在发送 HIT 之前处理所有需要在统计信息中收集的必要信息。 例如,如果您没有正确处理 UUID,google 会将每个 HIT 视为 "new visitor"。如果你想知道用户的地理位置,而你的服务器在爱尔兰,那么用户的每一次点击都将被视为爱尔兰人所为。每个 ip 都与您的服务器相同,依此类推。 我使用 php 创建了一个考虑所有这些问题的自定义库。 基本上你可以使用 curl:

function SendGoogleEvent($userid,$category,$action, $label='',$eventvalue=0,$campaign_name='direct',$campaign_source='organic',$campaign_medium='organic'){
$strCookie='';
foreach ($_COOKIE as $key => $value) {
    $strCookie.=$key.'='.$value.'; ';
}
$fields_string='';
$fields = array (
    'v' => 1,
    'tid' => "YOUR GA ID",
    'cid' => $userid,
    'uip' => $_SERVER['REMOTE_ADDR'],
    'dh' => "your site address",
    'ul' => 'it-it', // In this case i dont care the user language
    't' => 'event',
    'ec' => urlencode($category),
    'ea' => urlencode($action),
    'el' => urlencode($label),
    'ev' => $eventvalue
);  
if ($campaign_name!='direct') {
    $fields["cn"]=$campaign_name;
}
if ($campaign_source!='organic') {
    $fields["cs"]=$campaign_source;
}
if ($campaign_medium!='organic') {
    $fields["cm"]=$campaign_medium;
}
if (!(substr($_SERVER['HTTP_REFERER'], 0, strlen("your site url")) === "your site url")&&$campaign_name=='direct') {
    $fields["dr"]=$_SERVER['HTTP_REFERER'];
}
foreach($fields as $key=>$value) {
     $fields_string .= $key.'='.$value.'&'; 
}
rtrim($fields_string, '&');
$ch = curl_init();
curl_setopt($ch,CURLOPT_POST, count($fields));
curl_setopt($ch,CURLOPT_POSTFIELDS, utf8_encode($fields_string));       
curl_setopt($ch,CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_URL,"https://ssl.google-analytics.com/collect");
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Content-type: application/x-www-form-urlencoded'));
curl_setopt($ch,CURLOPT_HTTP_VERSION,CURL_HTTP_VERSION_1_1);            
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
curl_exec( $ch );
curl_close($ch);