谷歌分析跟踪代码与用户ID


Google Analytics tracking code with User-ID

我正在努力让用户ID功能在谷歌分析中发挥作用。为了做到这一点,我必须使用JavaScript将一个PHP变量传递给Google Analytics。

我试图通过在PHP脚本中回显所有的Javascript来实现这一点。

这是脚本:

<?php
if (isset($username)) {
    echo "'n";   
	echo "<script type='text/javascript'>'n";
	echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	})(window,document,'script','//www.google-analytics.com/analytics.js','ga');'n";
	echo "ga('create', 'UA-********-1', 'auto');'n";
	echo "ga('set', 'userID', '" . $username . "');'n";
	echo "ga('send', 'pageview');'n";
	echo "</script>'n";
} else {
    echo "'n";
	echo "<script type='text/javascript'>'n";
	echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
	(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
	m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
	})(window,document,'script','//www.google-analytics.com/analytics.js','ga');'n";
	echo "ga('create', 'UA-********-1', 'auto');'n";
	echo "ga('send', 'pageview');'n";
	echo "</script>'n";
}
?>

不幸的是,它不起作用。有人能告诉我我做错了什么吗?

更新2015-12-03

我决定使用一种更直接的方法来测试用户是否登录,此外,我还将不同的回声组合为条件语句的每一个分支:

<?php
if (login_check($mysqli) == true) {
echo "<!-- Google Analytics with userId -->
<script>
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    ga('create', 'UA-XXXXX-Y', 'auto');
    ga('set', 'userId', '" . $_SESSION['user_id'] . "');
    ga('send', 'pageview');
</script>
<script async src='//www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->";
} else {
echo "<!-- Google Analytics with pageview only -->
<script>
    window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)};ga.l=+new Date;
    ga('create', 'UA-XXXXX-Y', 'auto');
    ga('set', 'userId', '" . 'anonymous' . "');
    ga('send', 'pageview');
</script>
<script async src='//www.google-analytics.com/analytics.js'></script>
<!-- End Google Analytics -->";
}
?>

这个新片段有效。不过请注意,我必须设置userId才能使else语句中的代码工作。如果您在Google Analytics中启用用户跟踪,则必须设置userId。我还没有证实这一点,但这似乎是一个合理的推论。

您正在使用的用户ID参数的名称不正确。它应该是userId(驼色大小写),但您使用的是userID。此外,请确保从GA界面启用了用户ID功能。