jpg Skrevet 18. september 2015 Del Skrevet 18. september 2015 (endret) 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 18. september 2015 av jpg Lenke til kommentar
Lanes Skrevet 18. september 2015 Del Skrevet 18. september 2015 (endret) 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 18. september 2015 av Lanes Lenke til kommentar
jpg Skrevet 19. september 2015 Forfatter Del Skrevet 19. september 2015 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
Lanes Skrevet 19. september 2015 Del Skrevet 19. september 2015 $DEBUG_LAST_REQUESTED_URL er tydeligvis static, så da må du kalle den på en litt annen måte. Prøv $t::$DEBUG_LAST_REQUESTED_URL heller. Mer info her: http://php.net/manual/en/language.oop5.static.php 1 Lenke til kommentar
jpg Skrevet 19. september 2015 Forfatter Del Skrevet 19. september 2015 Det var løsningen, takk skal du ha Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå