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)
问题
如何将信息发送到我在 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);
主要思想
我正在做一个项目,我需要使用 Google Analytics 服务器端。我不需要检索信息,但我需要发送信息。我最终可以发送 js 脚本客户端,但在这种情况下,它不是一个选项。
下面的大部分链接真的很老了。 2012~
正在检索 - 不是我需要的
我阅读了多个 Whosebug post,但它们只提到了检索信息的方法。
PHP API for Google Analytics(SO)
发送 - 我需要的
有一个 post 谈论发送信息,但 GitHub 已被该库弃用。
Google Analytics PHP API Redirect URI (SO)
问题
如何将信息发送到我在 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);