{"id":291,"date":"2024-08-21T15:15:08","date_gmt":"2024-08-21T15:15:08","guid":{"rendered":"https:\/\/www.privacyanalytics.eu\/?p=291"},"modified":"2024-08-21T15:17:52","modified_gmt":"2024-08-21T15:17:52","slug":"matomo-php-tracker","status":"publish","type":"post","link":"https:\/\/www.privacyanalytics.eu\/matomo-php-tracker\/","title":{"rendered":"Matomo PHP Tracker"},"content":{"rendered":"<p>Passiamo a qualcosa di pi\u00f9 tecnico. Possiamo configurare un <a href=\"https:\/\/www.gaminghouse.community\/it\/articoli-1002\/matomo-server-side-tracking-131\" rel=\"noopener\">tracciamento lato server<\/a> per avere un\u2019analisi del traffico pi\u00f9 precisa.<\/p>\n\n<h2>Server side e client side<\/h2>\n<p>Per dirlo in poche parole, il <a href=\"https:\/\/www.privacyanalytics.eu\/matomo-configurare-tracciamento-nel-sito\/\">tracciamento lato client<\/a> funziona sul <strong>browser <\/strong>dell&#8217;utente, generalmente tramite <strong>Javascript<\/strong>. Il vantaggio \u00e8 che \u00e8 possibile raccogliere determinate metriche in modo semplice e pi\u00f9 leggero per il server.<\/p>\n<p>Diversamente, il <strong>tracciamento lato server <\/strong>non usa Javascript ma viene effettuato direttamente, appunto, dal server stesso. Possiamo utilizzare ad esempio <strong>PHP <\/strong>per analizzare le visite che riceviamo dagli utenti.<\/p>\n<p>Vi sono poi dei software di <strong>Log Analytics <\/strong>come <a href=\"https:\/\/awstats.sourceforge.io\/\" target=\"_blank\" rel=\"noopener nofollow\">Awstats<\/a> o <a href=\"https:\/\/goaccess.io\/\" target=\"_blank\" rel=\"noopener nofollow\">GoAccess<\/a>, che analizzano i log del server per determinare il traffico degli utenti sulle nostre pagine web.<\/p>\n<p>Il vantaggio pi\u00f9 importante del <b>server side tracking<\/b> o della log analysis \u00e8 che possiamo monitorare il traffico che arriva anche da quegli utenti che usano <strong>sistemi di AdBlock<\/strong>, o simili, che bloccano i tracciamenti <strong>Javascript<\/strong>.<\/p>\n<p>In realt\u00e0, il <a href=\"https:\/\/www.gaminghouse.community\/it\/articoli-1002\/matomo-server-side-tracking-131\" target=\"_blank\" rel=\"noopener\">server side analytics tracking di Matomo<\/a> \u00e8 semplice da utilizzare. Prenderemo come riferimento la <strong>libreria PHP<\/strong>, che \u00e8 tra i linguaggi pi\u00f9 diffusi nella creazione di siti web.<\/p>\n<h2>Installazione del PHP Tracker<\/h2>\n<p>La via pi\u00f9 semplice \u00e8 tramite Composer:<\/p>\n<pre class=\"language-bash\"><code>composer require matomo\/matomo-php-tracker<\/code><\/pre>\n<p>Altrimenti andiamo con la strada classica:<\/p>\n<ol>\n<li>Scaricare <a href=\"https:\/\/github.com\/matomo-org\/matomo-php-tracker\/blob\/master\/MatomoTracker.php\" target=\"_blank\" rel=\"noopener nofollow\">MatomoTracker.php<\/a> e <a href=\"https:\/\/github.com\/matomo-org\/matomo-php-tracker\/blob\/master\/PiwikTracker.php\" target=\"_blank\" rel=\"noopener nofollow\">PiwikTracker.php<\/a> da Github oppure una differente <a href=\"https:\/\/developer.matomo.org\/guides\/tracking-api-clients#client-libraries-for-apps-or-server-side-tracking\" target=\"_blank\" rel=\"noopener nofollow\">libreria per il server side tracking<\/a><\/li>\n<li>Caricare i file <strong>MatomoTracker.php <\/strong>e <strong>PiwikTracker.php<\/strong> nel proprio <strong>server web<\/strong>, ad esempio nella cartella <em>\/public_html\/matomo\/<\/em>, tramite <strong>Filezilla <\/strong>o altro File Manager con <strong>FTP<\/strong><\/li>\n<li>Nel proprio <strong>applicativo web<\/strong>, aggiungere il seguente <strong>codice PHP <\/strong>in tutte le pagine, oppure nel <strong>template <\/strong>a seconda di quale strumento si sta usando:<\/li>\n<\/ol>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-292 size-large\" src=\"https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker-1024x537.png\" alt=\"\" width=\"1024\" height=\"537\" srcset=\"https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker-1024x537.png 1024w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker-300x157.png 300w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker-768x403.png 768w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker-477x250.png 477w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-14-Matomo-PHP-Tracker.png 1066w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><figcaption>Codice PHP per attivare il tracker server side<\/figcaption><\/figure>\n<p>Ecco lo snippet di codice:<\/p>\n<pre class=\"language-php\"><code># File template.php o simile, l'imporante \u00e8 che questo codice venga caricato in tutte le pagine\r\n$matomoSiteId = 1;\r\n$matomoUrl = '{url-piattaforma-matomo}';\r\n$matomoToken = '{inserisci-token}';\r\n$matomoPageTitle = '';\r\n\r\nrequire_once '{percorso-al-file}\/MatomoTracker.php';\r\n\r\ntry {\r\n    $matomoTracker = new MatomoTracker($matomoSiteId, $matomoUrl);\r\n    $matomoTracker-&gt;setRequestTimeout(2);\r\n    $matomoTracker-&gt;setTokenAuth($matomoToken);\r\n} catch (Exception $e) {\r\n}\r\n\r\n# File pagina.php, per personalizzare il titolo della pagina da passare a Matomo\r\n\r\nif (!empty($matomoTracker)) {\r\n    $matomoTracker-&gt;doTrackPageView($matomoPageTitle);\r\n}\r\n<\/code><\/pre>\n<p>In base a come abbiamo installato il PHP Tracker, potremmo dover includere il <b>namespace<\/b> in PHP oppure fare un <b>require<\/b> di MatomoTracker.php.<\/p>\n<p>Per poter configurare il <strong>$matomoToken<\/strong>, facciamo riferimento a: <a href=\"https:\/\/www.privacyanalytics.eu\/matomo-configurare-auth-token\/\">Matomo: Configurazione Auth Token<\/a><\/p>\n<p>Se pu\u00f2 esservi di aiuto, <b>il titolo della pagina<\/b> che passiamo a Matomo tramite la funzione <b>doTrackPageView()<\/b> lo possiamo determinare solitamente nel <b>template<\/b>, dove viene generato il tag title all\u2019interno dell\u2019head. Questo dipende molto dallo strumento che usiamo, ad esempio un <b>CMS personalizzato<\/b>.<\/p>\n<p>A questo punto, <b>commentiamo la riga di Javascript<\/b> che invia il tracciamento (<b>trackP<\/b><b>ageView<\/b>) a Matomo, perch\u00e9 altrimenti <b>registrerem<\/b><b>m<\/b><b>o una doppia visita<\/b>:<\/p>\n<figure><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-293 size-full\" src=\"https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-15-Codice-tracciamento-client-side-per-server-side.png\" alt=\"\" width=\"739\" height=\"555\" srcset=\"https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-15-Codice-tracciamento-client-side-per-server-side.png 739w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-15-Codice-tracciamento-client-side-per-server-side-300x225.png 300w, https:\/\/www.privacyanalytics.eu\/app\/uploads\/2024\/08\/Figura-15-Codice-tracciamento-client-side-per-server-side-333x250.png 333w\" sizes=\"(max-width: 739px) 100vw, 739px\" \/><figcaption>Codice di tracciamento client side compatibile con il server side<\/figcaption><\/figure>\n<p>Questo lo snippet:<\/p>\n<pre class=\"language-javascript\"><code>var _paq = window._paq = window._paq || [];\r\n\/* tracker methods like \"setCustomDimension\" should be called before \"trackPageView\" *\/\r\n_paq.push(['enableHeartBeatTimer', 15]);\r\n\/\/ La riga seguente \u00e8 stata commentata per evitare doppie visite\r\n\/\/ _paq.push(['trackPageView']);\r\n_paq.push(['enableLinkTracking']);\r\n(function() {\r\n    var u = \"https:\/\/matomo.yourwebsite.com\/\";\r\n    _paq.push(['setTrackerUrl', u + 'matomo.php']);\r\n    _paq.push(['setSiteId', '1']);\r\n    var d = document,\r\n        g = d.createElement('script'),\r\n        s = d.getElementsByTagName('script')[0];\r\n    g.type = 'text\/javascript';\r\n    g.async = true;\r\n    g.src = u + 'matomo.js';\r\n    s.parentNode.insertBefore(g, s);\r\n})();<\/code><\/pre>\n<p>In questo caso ho usato anche <strong>enableHeartBeatTimer<\/strong>, \u00e8 una funzione che permette un tracciamento pi\u00f9 preciso inviando un ping ogni tot secondi (minimo 15) a Matomo per capire quanto tempo un utente rimane su una certa pagina. Per approfondire, rimando alla <a href=\"https:\/\/developer.matomo.org\/api-reference\/tracking-javascript\" target=\"_blank\" rel=\"noopener nofollow\">documentazione Javascript di Matomo<\/a>.<\/p>\n<p>Possiamo anche configurare su Matomo il <strong>tracciamento di Eventi<\/strong>, ad esempio se vogliamo sapere su quali link cliccano gli utenti.<\/p>\n<p>Attenzione che alcuni tracciamenti potrebbero venire bloccati dalla funzionalit\u00e0 <strong>Do Not Track <\/strong>di Firefox e altri browser, oppure da sistemi di Ad blocking.<\/p>\n<h2>Link utili<\/h2>\n<ul>\n<li><a href=\"https:\/\/awstats.sourceforge.io\/\" target=\"_blank\" rel=\"noopener nofollow\">Awstats<\/a><\/li>\n<li><a href=\"https:\/\/goaccess.io\/\" target=\"_blank\" rel=\"noopener nofollow\">GoAccess<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/matomo-org\/matomo-php-tracker\/blob\/master\/MatomoTracker.php\" target=\"_blank\" rel=\"noopener nofollow\">MatomoTracker.php<\/a><\/li>\n<li><a href=\"https:\/\/github.com\/matomo-org\/matomo-php-tracker\/blob\/master\/PiwikTracker.php\" target=\"_blank\" rel=\"noopener nofollow\">PiwikTracker.php<\/a><\/li>\n<li><a href=\"https:\/\/developer.matomo.org\/guides\/tracking-api-clients#client-libraries-for-apps-or-server-side-tracking\" target=\"_blank\" rel=\"noopener nofollow\">Libreria per il server side tracking di Matomo<\/a><\/li>\n<\/ul>\n<h2>Leggi anche<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.privacyanalytics.eu\/database-raccolta-dati-come-funziona\/\">Matomo: cos\u2019\u00e8 e come funziona<\/a><\/li>\n<li><a href=\"https:\/\/www.privacyanalytics.eu\/matomo-per-wordpress\/\">Matomo per WordPress<\/a><\/li>\n<li><a href=\"https:\/\/www.privacyanalytics.eu\/matomo-vs-google-analytics\/\">Matomo vs Google Analytics<\/a><\/li>\n<li><a href=\"https:\/\/www.privacyanalytics.eu\/matomo-configurare-tracciamento-nel-sito\/\">Come configurare il tracciamento di Matomo nel nostro sito web<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Passiamo a qualcosa di pi\u00f9 tecnico. Possiamo configurare un tracciamento lato server per avere un\u2019analisi del traffico pi\u00f9 precisa. Server side e client side Per dirlo in poche parole, il tracciamento lato client funziona sul browser dell&#8217;utente, generalmente tramite Javascript. Il vantaggio \u00e8 che \u00e8 possibile raccogliere determinate metriche in modo semplice e pi\u00f9 leggero [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":296,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[9],"tags":[],"class_list":["post-291","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-matomo"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/posts\/291"}],"collection":[{"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/comments?post=291"}],"version-history":[{"count":3,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/posts\/291\/revisions"}],"predecessor-version":[{"id":297,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/posts\/291\/revisions\/297"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/media\/296"}],"wp:attachment":[{"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/media?parent=291"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/categories?post=291"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.privacyanalytics.eu\/wp-json\/wp\/v2\/tags?post=291"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}