Gå til innhold

Piwik php tracker, hvordan feilsøke?


Anbefalte innlegg

Holder på å lage min egen private TinyPic erstatter. I den forbindelse, ønsker jeg også å kunne spore antall bilde visninger med Piwik.

 

Scriptet fungerer utmerket, med unntak av selve piwik php sporingen. Det er ingen tegn på at noe som helst blir sporet i databasene...

JavaScript sporing derimot, har jeg hatt på diverse nettsider over lengre tid, og aldri opplevd problemer.
 
Har forsøkt å google akkurat dette med feilsøking, men alt jeg finner ut er at jeg må sette en global variable, før piwik koden lastes, slik at en skal kunne lese av noen debug verdier etterpå.

$GLOBALS['PIWIK_TRACKER_DEBUG'] = true;
//
// require __DIR__ . '/vendor/autoload.php';
// new PiwikTracker (...);
// diverse piwik relatert kode
// doTrackPageView(...);
//
echo $DEBUG_APPEND_URL;
// Notice: Undefined variable: DEBUG_APPEND_URL in ...
echo $DEBUG_LAST_REQUESTED_URL;
// Notice: Undefined variable: DEBUG_LAST_REQUESTED_URL in ...

php scriptet i sin helhet:

 

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Piwik data
$idSite = 6;
$token_auth = 'xxxxxxxxxxxxxx';
$piwik_url = 'http://piwik.example.com/';

// Whitelisted file types
$whitelist = array();
$whitelist[] = 'image/png; charset=binary';

// Path and file
$request = filter_input(INPUT_GET, 'file', FILTER_SANITIZE_URL);
$safe_path = '/media/jpg1t/imagehosting/';
$file = realpath($safe_path . $request);

// Check if the file is in the safe path
if (strrpos($file, $safe_path, -strlen($file)) === false) {
    http_response_code(404);
    exit;
}

// Check if the file exists
if (file_exists($file) !== true) {
    http_response_code(404);
    exit;
}

// Get MIME type
$finfo = finfo_open(FILEINFO_MIME);
$type = finfo_file($finfo, $file);
finfo_close($finfo);

// Check that the file type is allowed
if (in_array($type, $whitelist) !== true) {
    http_response_code(404);
    //echo $type;
    exit;
}

require __DIR__ . '/../vendor/autoload.php';

// Load Piwik Tracker
$t = new PiwikTracker($idSite, $piwik_url);

// Auth to allow for more API functions
$t->setTokenAuth($token_auth);

// Set correct IP (Should be users, not the web server issuing the request)
$t->setIp($_SERVER['REMOTE_ADDR']);

// Set referrer (if applicable)
if (isset($_SERVER['HTTP_REFERER']))
    $t->setUrl($_SERVER['HTTP_REFERER']);

$t->doTrackPageView('Image viewed: ' . $request);

// open the file in a binary mode
$fp = fopen($file, 'rb');

// Send the right headers
header("Content-Type: " . $type);
header("Content-Length: " . filesize($file));

// Send content
fpassthru($fp);
exit;

 

 

 

Piwik documentation: http://developer.piwik.org/api-reference/php-piwik-tracker

Piwik API: http://piwik.org/docs/tracking-api/

Endret av jpg
Lenke til kommentar
Videoannonse
Annonse

Du kaller en variable som ikke er satt, $DEBUG_APPEND_URL er en class property, som må kalles via class instansen. Prøv dette heller så skal du nok se at det fungerer.

echo $t->DEBUG_APPEND_URL;

Edit: Jeg har ikke sett over resten av koden, og jeg har aldri brukt piwik, så det kan være du har andre feil i tillegg.

Endret av Lanes
Lenke til kommentar

Takk for nyttig info. $t burde jeg tenkt på, er jo nesten et opplagt svar på problemet. Men sånn går det når man er selvlært, og ikke kan noe særlig om klasser eller object orientert kode.
 
Jeg får det fortsatt ikke helt til, så jeg har kokt ned koden til å kun inkludere det aller mest nødvendigste.

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Piwik data
$idSite = 6;
$token_auth = 'xxxxxxxxxx';
$piwik_url = 'http://piwik.example.com/';
$GLOBALS['PIWIK_TRACKER_DEBUG'] = true;

require_once __DIR__ . '/../vendor/piwik/piwik-php-tracker/PiwikTracker.php';

// Load Piwik Tracker
//PiwikTracker::$URL = $piwik_url;
$t = new PiwikTracker($idSite, $piwik_url);

// Auth to allow for more API functions
$t->setTokenAuth($token_auth);

// Set correct IP (Should be users, not the web server issuing the request)
$t->setIp($_SERVER['REMOTE_ADDR']);

// Set referrer (if applicable)
if (isset($_SERVER['HTTP_REFERER']))
    $t->setUrl($_SERVER['HTTP_REFERER']);

$t->doTrackPageView('Image viewed');

var_dump($t->DEBUG_APPEND_URL);
var_dump($t->DEBUG_LAST_REQUESTED_URL);

Resultat:

string(0) "" 
Strict Standards: Accessing static property PiwikTracker::$DEBUG_LAST_REQUESTED_URL as non static in (...) on line 30

Notice: Undefined property: PiwikTracker::$DEBUG_LAST_REQUESTED_URL in (...) on line 30
NULL
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...