我正在开发一个项目,我需要使用Google Analytics服务器端。我不需要检索信息,但我需要发送信息。我最终可以发送js脚本客户端,但在这种情况下它不是一个选项。
以下大多数链接都很旧。 2012〜
我已阅读多篇StackOverflow帖子,但他们只提到了检索信息的方法。
PHP API for Google Analytics(SO)
有一篇帖子谈论发送信息,但GitHub已被弃用于该库。
Google Analytics PHP API Redirect URI (SO)
如何使用PHP向Google Analytics帐户发送信息?感谢
答案 0 :(得分:9)
要非常小心...... Google可以使用Cookie和浏览器功能检索有关用户代理,位置,广告系列,广告系列,语言等的大量用户信息。 所有命令通常都是使用客户端js脚本发送的。 如果您想在服务器端工作,您必须在发送HIT之前处理您需要在统计信息中收集的所有必要信息。 例如,如果您没有正确处理UUID,Google会将每个HIT视为"新访问者"。如果您想知道用户的地理位置并且您的服务器位于爱尔兰,那么用户所做的每一次点击都将被爱尔兰人认为是。每个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);
答案 1 :(得分:5)
您通过Measurement Protocol发送数据。您不需要特殊的库或开发工具包,只需将参数附加到GA端点并通过Curl / fopen / sockets /发送给Google Analytics。
每个调用至少包含您要向其发送数据的帐户的ID,客户端ID允许将交互分组到会话中(因此每个访问者应该是唯一的,但不能单独识别用户),交互类型(网页浏览,事件,时间等,某些交互类型需要其他参数)和您正在使用的协议版本(目前只有一个版本)。
因此,记录网页浏览的最基本示例如下所示:
www.google-analytics.com/collect/v=1&tid=UA-XXXXY&cid=555&t=pageview&dp=%2Fmypage