Я пытаюсь использовать функцию User-ID для работы в Google Analytics. Для этого мне нужно передать переменную PHP в Google Analytics с помощью JavaScript.Код отслеживания Google Analytics с идентификатором пользователя
Я попытался сделать это, повторив весь Javascript в PHP-скрипте.
Вот этот скрипт:
<?php
if (isset($username)) {
echo "\n";
\t echo "<script type='text/javascript'>\n";
\t echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
\t (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
\t m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
\t })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n";
\t echo "ga('create', 'UA-********-1', 'auto');\n";
\t echo "ga('set', 'userID', '" . $username . "');\n";
\t echo "ga('send', 'pageview');\n";
\t echo "</script>\n";
} else {
echo "\n";
\t echo "<script type='text/javascript'>\n";
\t echo "(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
\t (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
\t m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
\t })(window,document,'script','//www.google-analytics.com/analytics.js','ga');\n";
\t echo "ga('create', 'UA-********-1', 'auto');\n";
\t echo "ga('send', 'pageview');\n";
\t echo "</script>\n";
}
?>
К сожалению, это не работает. Может ли кто-нибудь сказать мне, что я делаю неправильно?
UPDATE 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 работал. Должно быть, вам нужно установить userId
, если вы включите отслеживание пользователей в Google Analytics. Я еще не подтвердил это, но это похоже на разумный вывод.
'var_dump ($ username);' и посмотреть, действительно ли он содержит какие-либо данные. – ScottMcGready
Спасибо @ScottMcGready. Как вы подозревали, переменная $ username = NULL, но в этом случае не должен выполняться код в инструкции ELSE? Например, var_dump (isset ($ username)) = bool (false). – dgoverde
Всё зависит. Если для '$ username' установлено значение« NULL », оно может по-прежнему запускать первое условие, поскольку« $ username »технически задано, хотя это значение равно« NULL ». Что делать, так это дамп 2 'echo' в каждом блоке - один с именем пользователя echo 'установлено';' и 'echo 'имя пользователя не задано';' и посмотреть, какие выходы. Затем вы можете отлаживать дальше от этого – ScottMcGready