Revision: 29049
Updated Code
at July 20, 2010 06:53 by nfreear
Updated Code
<?php /** Redirect to a Piwik webbug (1 pixel image), or the Google-Analytics one. OLnet.org / OER tracking project. @copyright 2010 The Open University. Usage - Piwik - title=X, r=referrer are optional, <img alt="" src="http://localhost/track/PI-1/example.org/path/to/123?title=My+Title" /> Usage - Google-Analytics, <img alt="" src="http://localhost/track/UA-1234-5/example.org/path/to/123?title=My+Title&r=http%3A//referer.example.com/" /> An Apache .htaccess/httpd.conf edit is required: <IfModule mod_rewrite.c> RewriteEngine on # If the file/dir is NOT real go to index RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,L] </IfModule> <IfModule !mod_rewrite.c> # If mod_rewrite is NOT installed go to index.php ErrorDocument 404 index.php </IfModule> */ // Substitute your local Piwik here. #define('PIWIK_TRACKER', "http://localhost/my_piwik/piwik.php"); define('PIWIK_TRACKER', "http://piwik.org/demo/piwik.php"); define('GOOGLE_TRACKER', "http://www.google-analytics.com/__utm.gif"); date_default_timezone_set('Europe/London');#Prevent warnings. $local_url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $path = parse_url($local_url, PHP_URL_PATH); // Optional Referrer/title - use parse_url for crude parsing. $referer = isset($_GET['r']) && 'array'==gettype(@parse_url($_GET['r'])) ? $_GET['r'] : NULL; $referer = !$referer && isset($_SERVER['HTTP_REFERER']) ? isset($_SERVER['HTTP_REFERER']) : $referer; $title = isset($_GET['title']) ? $_GET['title'] : NULL; $request_string = NULL; if (preg_match('#/PI-(\d+?)/(.+)$#', $path, $matches)) { // Piwik $request_string = piwik_analytics_bug_url($matches, $title, $referer); } elseif (preg_match('#/(UA-\d+?(-\d+)?)/(.+)$#', $path, $matches)) { // Google/Urchin? $request_string = google_analytics_bug_url($matches, $title, $referer); } //ELSE: Yahoo? // Error. if (!$request_string) { @header("HTTP/1.1 400", TRUE, 400); die("Error, bad request."); } // OK, do the redirect to the web bug (temporary). @header("HTTP/1.1 302 Moved", TRUE, 302); header("Location: $request_string"); exit; echo " DEBUG, redirect: $request_string "; /* Based on, http://dev.piwik.org/svn/trunk/core/Tracker/Visit.php http://www.burtonkent.com/wp-content/uploads/piwik-tag.php */ function piwik_analytics_bug_url($matches, $title=NULL, $referer=NULL) { // non-Javascript solution can't get screen-resolution, Flash, Java, other plugin capabilities. $request = array(); # idsite - Piwik site ID. $request['idsite'] = $matches[1]; # url - Requested URL. $scheme = 80==$_SERVER['SERVER_PORT'] ? 'http://' : 'https://'; $request['url'] = $scheme . $matches[2]; # urlref - Referrer. $request['urlref'] = $referer; # title, action_name? $request['title'] = $title; $request['action_name']= $title; # cookie - Are cookies enabled? /*if (isset($_SERVER['HTTP_COOKIE']) && $_SERVER['HTTP_COOKIE'] != '') { $request['cookie'] = 1; } else { $request['cookie'] = 0; # or possibly not set? Hmm, not convinced! }*/ # (d,) h, m, s - hours, minutes, seconds (, days?) list($request['d'], $request['h'], $request['m'], $request['s']) = explode('|', date('d|H|i|s', $_SERVER['REQUEST_TIME'])); # rand - random number - quick 17 precision random number. $request['rand'] = '0.' . mt_rand(0, mt_getrandmax()); # rec - record? 1 by default $request['rec'] = 1; return PIWIK_TRACKER .'?'. http_build_query($request); } /* Based on http://nojsstats.blogspot.com/ */ function google_analytics_bug_url($matches, $title=NULL, $referer=NULL) { $request = array('utmwv'=>1, 'utmsr'=>'-', 'utmsc'=>'-', 'utmul'=>'-', 'utmje'=>'0', 'utmfl'=>'-', 'utmjv'=>'-'); //'hid' Another number? $request['utmac'] = $matches[1]; $p = parse_url('http://'.$matches[3]); $request['utmhn'] = $p['host']; $request['utmp' ] = $p['path']. (isset($p['query']) ? '?'.$p['query'] : ''); $request['utmdt'] = $title; $request['utmr' ] = $referer; # utmn - Random number? $request['utmn' ] = mt_rand(0, mt_getrandmax()); return GOOGLE_TRACKER .'?'. http_build_query($request); }
Revision: 29048
Updated Code
at July 20, 2010 06:51 by nfreear
Updated Code
<?php /** Redirect to a Piwik webbug (1 pixel image), or the Google-Analytics one. OLnet.org / OER tracking project. @copyright 2010 The Open University. Usage - Piwik, <img alt="" src="http://localhost/track/PI-1/example.org/path/to/123?title=My+Title" /> Usage - Google-Analytics, <img alt="" src="http://localhost/track/UA-1234-5/example.org/path/to/123?title=My+Title&r=http%3A//referer.example.com/" /> An Apache .htaccess/httpd.conf edit is required: <IfModule mod_rewrite.c> RewriteEngine on # If the file/dir is NOT real go to index RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [QSA,L] </IfModule> <IfModule !mod_rewrite.c> # If mod_rewrite is NOT installed go to index.php ErrorDocument 404 index.php </IfModule> */ // Substitute your local Piwik here. #define('PIWIK_TRACKER', "http://localhost/my_piwik/piwik.php"); define('PIWIK_TRACKER', "http://piwik.org/demo/piwik.php"); define('GOOGLE_TRACKER', "http://www.google-analytics.com/__utm.gif"); date_default_timezone_set('Europe/London');#Prevent warnings. $local_url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $path = parse_url($local_url, PHP_URL_PATH); // Optional Referrer/title - use parse_url for crude parsing. $referer = isset($_GET['r']) && 'array'==gettype(@parse_url($_GET['r'])) ? $_GET['r'] : NULL; $referer = !$referer && isset($_SERVER['HTTP_REFERER']) ? isset($_SERVER['HTTP_REFERER']) : $referer; $title = isset($_GET['title']) ? $_GET['title'] : NULL; $request_string = NULL; if (preg_match('#/PI-(\d+?)/(.+)$#', $path, $matches)) { // Piwik $request_string = piwik_analytics_bug_url($matches, $title, $referer); } elseif (preg_match('#/(UA-\d+?(-\d+)?)/(.+)$#', $path, $matches)) { // Google/Urchin? $request_string = google_analytics_bug_url($matches, $title, $referer); } //ELSE: Yahoo? // Error. if (!$request_string) { @header("HTTP/1.1 400", TRUE, 400); die("Error, bad request."); } // OK, do the redirect to the web bug (temporary). @header("HTTP/1.1 302 Moved", TRUE, 302); header("Location: $request_string"); exit; echo " DEBUG, redirect: $request_string "; /* Based on, http://dev.piwik.org/svn/trunk/core/Tracker/Visit.php http://www.burtonkent.com/wp-content/uploads/piwik-tag.php */ function piwik_analytics_bug_url($matches, $title=NULL, $referer=NULL) { // non-Javascript solution can't get screen-resolution, Flash, Java, other plugin capabilities. $request = array(); # idsite - Piwik site ID. $request['idsite'] = $matches[1]; # url - Requested URL. $scheme = 80==$_SERVER['SERVER_PORT'] ? 'http://' : 'https://'; $request['url'] = $scheme . $matches[2]; # urlref - Referrer. $request['urlref'] = $referer; # title, action_name? $request['title'] = $title; $request['action_name']= $title; # cookie - Are cookies enabled? /*if (isset($_SERVER['HTTP_COOKIE']) && $_SERVER['HTTP_COOKIE'] != '') { $request['cookie'] = 1; } else { $request['cookie'] = 0; # or possibly not set? Hmm, not convinced! }*/ # (d,) h, m, s - hours, minutes, seconds (, days?) list($request['d'], $request['h'], $request['m'], $request['s']) = explode('|', date('d|H|i|s', $_SERVER['REQUEST_TIME'])); # rand - random number - quick 17 precision random number. $request['rand'] = '0.' . mt_rand(0, mt_getrandmax()); # rec - record? 1 by default $request['rec'] = 1; return PIWIK_TRACKER .'?'. http_build_query($request); } /* Based on http://nojsstats.blogspot.com/ */ function google_analytics_bug_url($matches, $title=NULL, $referer=NULL) { $request = array('utmwv'=>1, 'utmsr'=>'-', 'utmsc'=>'-', 'utmul'=>'-', 'utmje'=>'0', 'utmfl'=>'-', 'utmjv'=>'-'); //'hid' Another number? $request['utmac'] = $matches[1]; $p = parse_url('http://'.$matches[3]); $request['utmhn'] = $p['host']; $request['utmp' ] = $p['path']. (isset($p['query']) ? '?'.$p['query'] : ''); $request['utmdt'] = $title; $request['utmr' ] = $referer; # utmn - Random number? $request['utmn' ] = mt_rand(0, mt_getrandmax()); return GOOGLE_TRACKER .'?'. http_build_query($request); }
Revision: 29047
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 20, 2010 06:44 by nfreear
Initial Code
<?php /** Redirect to a Piwik webbug (1 pixel image), or the Google-Analytics one. OLnet.org / OER tracking project. @copyright 2010 The Open University. Usage - Piwik, <img alt="" src="http://localhost/track/PI-1/example.org/path/to/123?title=My+Title&r=http%3A//referer.example.com/" /> Usage - Google-Analytics, <img alt="" src="http://localhost/track/UA-12345-6/example.org/path/to/123?title=My+Title&r=http://referer.example.com/" /> */ // Substitute your local Piwik here. #define('PIWIK_TRACKER', "http://localhost/my_piwik/piwik.php"); define('PIWIK_TRACKER', "http://piwik.org/demo/piwik.php"); define('GOOGLE_TRACKER', "http://www.google-analytics.com/__utm.gif"); date_default_timezone_set('Europe/London');#Prevent warnings. $local_url = $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $path = parse_url($local_url, PHP_URL_PATH); // Optional Referrer/title - use parse_url for crude parsing. $referer = isset($_GET['r']) && 'array'==gettype(@parse_url($_GET['r'])) ? $_GET['r'] : NULL; $referer = !$referer && isset($_SERVER['HTTP_REFERER']) ? isset($_SERVER['HTTP_REFERER']) : $referer; $title = isset($_GET['title']) ? $_GET['title'] : NULL; $request_string = NULL; if (preg_match('#/PI-(\d+?)/(.+)$#', $path, $matches)) { // Piwik $request_string = piwik_analytics_bug_url($matches, $title, $referer); } elseif (preg_match('#/(UA-\d+?(-\d+)?)/(.+)$#', $path, $matches)) { // Google/Urchin? $request_string = google_analytics_bug_url($matches, $title, $referer); } //ELSE: Yahoo? // Error. if (!$request_string) { @header("HTTP/1.1 400", TRUE, 400); die("Error, bad request."); } // OK, do the redirect to the web bug (temporary). @header("HTTP/1.1 302 Moved", TRUE, 302); header("Location: $request_string"); exit; echo " DEBUG, redirect: $request_string "; /* Based on, http://dev.piwik.org/svn/trunk/core/Tracker/Visit.php http://www.burtonkent.com/wp-content/uploads/piwik-tag.php */ function piwik_analytics_bug_url($matches, $title=NULL, $referer=NULL) { // non-Javascript solution can't get screen-resolution, Flash, Java, other plugin capabilities. $request = array(); # idsite - Piwik site ID. $request['idsite'] = $matches[1]; # url - Requested URL. $scheme = 80==$_SERVER['SERVER_PORT'] ? 'http://' : 'https://'; $request['url'] = $scheme . $matches[2]; # urlref - Referrer. $request['urlref'] = $referer; # title, action_name? $request['title'] = $title; $request['action_name']= $title; # cookie - Are cookies enabled? /*if (isset($_SERVER['HTTP_COOKIE']) && $_SERVER['HTTP_COOKIE'] != '') { $request['cookie'] = 1; } else { $request['cookie'] = 0; # or possibly not set? Hmm, not convinced! }*/ # (d,) h, m, s - hours, minutes, seconds (, days?) list($request['d'], $request['h'], $request['m'], $request['s']) = explode('|', date('d|H|i|s', $_SERVER['REQUEST_TIME'])); # rand - random number - quick 17 precision random number. $request['rand'] = '0.' . mt_rand(0, mt_getrandmax()); # rec - record? 1 by default $request['rec'] = 1; return PIWIK_TRACKER .'?'. http_build_query($request); } /* Based on http://nojsstats.blogspot.com/ */ function google_analytics_bug_url($matches, $title=NULL, $referer=NULL) { $request = array('utmwv'=>1, 'utmsr'=>'-', 'utmsc'=>'-', 'utmul'=>'-', 'utmje'=>'0', 'utmfl'=>'-', 'utmjv'=>'-'); //'hid' Another number? $request['utmac'] = $matches[1]; $p = parse_url('http://'.$matches[3]); $request['utmhn'] = $p['host']; $request['utmp' ] = $p['path']. (isset($p['query']) ? '?'.$p['query'] : ''); $request['utmdt'] = $title; $request['utmr' ] = $referer; # utmn - Random number? $request['utmn' ] = mt_rand(0, mt_getrandmax()); return GOOGLE_TRACKER .'?'. http_build_query($request); }
Initial URL
http://olnet.org/node/149
Initial Description
A solution to tracking for example RSS feed usage - no Javascript required. * Note, an Apache .htaccess/httpd.conf edit is required - see code comment. * Example usage - see code comment. * Inspired by, nojsstats.appspot.com (Part of the OLnet/ OER tracking project.)
Initial Title
No-JS redirect to Piwik/ Google Analytics webbug
Initial Tags
Initial Language
PHP