2015-11-29 2 views
0

Я пытаюсь использовать функцию 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. Я еще не подтвердил это, но это похоже на разумный вывод.

+0

'var_dump ($ username);' и посмотреть, действительно ли он содержит какие-либо данные. – ScottMcGready

+0

Спасибо @ScottMcGready. Как вы подозревали, переменная $ username = NULL, но в этом случае не должен выполняться код в инструкции ELSE? Например, var_dump (isset ($ username)) = bool (false). – dgoverde

+0

Всё зависит. Если для '$ username' установлено значение« NULL », оно может по-прежнему запускать первое условие, поскольку« $ username »технически задано, хотя это значение равно« NULL ». Что делать, так это дамп 2 'echo' в каждом блоке - один с именем пользователя echo 'установлено';' и 'echo 'имя пользователя не задано';' и посмотреть, какие выходы. Затем вы можете отлаживать дальше от этого – ScottMcGready

ответ

1

Неверное имя параметра идентификатора пользователя, который вы используете. Он должен быть userId (случай верблюда), но вы используете userID. Кроме того, убедитесь, что функция идентификатора пользователя включена в интерфейсе GA.

+0

Спасибо, @nyuen, используя дело верблюда! – dgoverde

Смежные вопросы