• User Attivo

    Analytics e conteggio download dei files

    Salve ragazzi dovrei poter conteggiare i download di due file dal mio sito, e a parte un semplice sistema di conteggio da aggiornare ogni volta che qualcuno vi fa click non saprei come fare.
    Per quanto abbia cercato non mi pare che analytics permetta questo tipo di monitoraggio, o dico una fesseria?


  • User Attivo

    Mi rispondo da solo o meglio ci provo.
    Per tentare di risolvere la questione ho creato due file in php, uno chiamato pdf.php e uno word.php nella root del sito.
    Questi due file non fanno altro che scaricare i due file PDF e DOC tramite chiamate header().
    Questo il file (edulcorato) chiamato pdf.php l'altro è uguiale, cambia solo il nome del file da scaricare.
    [PHP]
    <?php
    /*
    * Esegue il download di un file in PDF
    */
    ob_start();
    session_start();

    if (filter_has_var(INPUT_GET, 'id') && filter_input(INPUT_GET, 'id') == 'MA_CIAO.pdf') {
        //    file riconosciuto
        header('Content-Type: application/octet-stream');  
        header('Content-Disposition: attachment; filename="MA_CIAO.pdf"');   
        header('Content-Transfer-Encoding: binary');  
          
        readfile('MA_CIAO.pdf');
    }    echo false;
    

    ?><!-- Google Analytics -->
    <script>
    var _gaq=[['_setAccount','UA-XXXXXXX-10'],['_trackPageview']];
    (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
    g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
    s.parentNode.insertBefore(g,s)}(document,'script'));
    </script><?php
    // Svuoto la cache finché c'è qualcosa.
    while (ob_get_level() > 0) {
    ob_end_flush();
    }

    //    ripristino il flusso dati se non ce ne sono in origine.
    if (ob_get_length() === false) {
        ob_start();
    }
    

    ?>
    [/PHP]
    Come si vede il file prima di tutto controlla che nella GET ci sta qualche cosa e se questo qualche cosa è il nome del file da scaricare, poi esegue le chiamate header e infine legge il file che non fa altro che scatenare lo scaricamento nel browser.
    L'ho provato sia con Firefox che con IE8 e funziona, ma non con altri browser quindi sperem.
    Subito dopo chiudo il costrutto PHP e apro la sessione HTML che non è altro se non la chiamata ad Analytics, quindi riapro la sessione PHP per svuotare il flusso aperto con ob_start.
    In questo modo, credo, la chiamata al file (pdf o word) dovrebbe essere interpretata da Analytics come un vero accesso ad una pagina e quindi conteggiato.
    Notare che per funzionare bene ai fini si una statistica ogni file da scaricare va chiamato con un file php a parte (anche se sto pensando che forse, cambiando la get ci sia il caso che Analytics lo interpreti ogni volta in modo diverso, ma non so).
    La chiamata e quindi lo scarico del file si fa così:
    [HTML]<a href="pdf.php?id=nomefile.pdf">Scarica il file in formato PDF</a> | <a href="word.php?id=nomefile.doc">Scarica il file in formato DOC</a>[/HTML]
    Tutto qui. Per ora!

    M.:ciauz: