Visualizzazione dei risultati da 1 a 7 su 7

Discussione: File di log

  1. #1
    Utente di HTML.it L'avatar di SerenaGrafic@
    Registrato dal
    Jul 2016
    residenza
    Piemonte
    Messaggi
    25

    File di log

    Buongiorno a tutti avrei alcune domande sui file di log.

    Per prima cosa vorrei capire quanto può servire creare un file di log che racchiuda le seguenti informazioni:
    1) Pagina visitata
    2) Data
    3) Ip
    4) Da che pagina ci si arriva
    5) Browser usato

    Inoltre è possibile scrivere sul file di log per quanto un visitatore rimane su una determinata pagina (front-end)? Ho provato a cercare una variabile PHP che facesse al caso mio ma non ho trovato nulla.

    Seconda cosa, vorrei creare un sistema di log per un CMS scritto da zero che segni alcune informazioni come:
    1) Login avvenuto con successo
    2) Eliminazione prodotto
    3) Erorri
    4) Ecc
    .. un po' come fa prestashop.

    Secondo voi è meglio creare un file .txt o appoggiarsi ad una tabella? Una tabella è più gestibile secondo me.

    Grazie anticipatamente, buona giornata!
    Studio grafico torino di Serena Grafic@

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,445
    Quote Originariamente inviata da SerenaGrafic@ Visualizza il messaggio
    Buongiorno a tutti avrei alcune domande sui file di log.

    Per prima cosa vorrei capire quanto può servire creare un file di log che racchiuda le seguenti informazioni:
    1) Pagina visitata
    2) Data
    3) Ip
    4) Da che pagina ci si arriva
    5) Browser usato
    Dipende da cosa ti interessa sapere.
    1) può darti una classifica delle pagine che hanno più successo
    2) ... boh, in riferimento a cosa? A tutti gli altri punti? Al limite puoi scoprire se ci sono particolari periodi in cui le visite aumentano o diminuiscono, oppure per "provare" (non in termini legali, perché la data puoi cambiarla a piacimento) quando è avvenuta una certa cosa.
    3) l'IP di solito si tiene se ci fosse bisogno di risalire ad un utente o per capire da dove provengono i visitatori geograficamente
    4) sempre a fini statistici quale pagina ha maggior efficacia per mandare gli utenti su un determinato contenuto se raggiungibile da posti diversi
    5) per capire su quale browser focalizzarti se per esempio il CSS del sito non può soddisfarli tutti allo stesso modo
    Inoltre è possibile scrivere sul file di log per quanto un visitatore rimane su una determinata pagina (front-end)? Ho provato a cercare una variabile PHP che facesse al caso mio ma non ho trovato nulla.
    PHP non ne sa niente di ciò che accade sul frontend, quindi non può dirti quanto tempo un utente sta su una pagina. Lavorando però con le sessioni magari ci riesci, ogni pagina visitata deve dichiarare il timestamp in cui ci si è arrivati, così al cambio di pagina ti basta una sottrazione tra timestamps per sapere il tempo trascorso tra un cambio pagina e l'altro, chiaramente non saprai quanto tempo l'utente è stato sull'ultima pagina, perché non avrà riscontro se chiude il tuo sito.

    Seconda cosa, vorrei creare un sistema di log per un CMS scritto da zero che segni alcune informazioni come:
    1) Login avvenuto con successo
    2) Eliminazione prodotto
    3) Erorri
    4) Ecc
    .. un po' come fa prestashop.

    Secondo voi è meglio creare un file .txt o appoggiarsi ad una tabella? Una tabella è più gestibile secondo me.

    Grazie anticipatamente, buona giornata!
    Se poi questi dati li devi elaborare, sicuramente userei il DB, ma tenendo a mente quanto il sito è frequentato, quanto quindi crescerebbero i dati raccolti considerando l'eventualità di eliminare quelli più vecchi di tot per non rischiare di riempire il DB solo di log.

  3. #3
    Utente di HTML.it L'avatar di SerenaGrafic@
    Registrato dal
    Jul 2016
    residenza
    Piemonte
    Messaggi
    25
    Ciao Alhazred, inanzitutto grazie mille per la risposta.
    Lo script riportato in ogni pagina è il seguente:

    Codice PHP:
    // raccolgo informazioni
    $provenienza $_SERVER['HTTP_REFERER'];
    $data date('Y-m-d H:i:s');;
    $ip $_SERVER['REMOTE_ADDR'];
    $altre_info $_SERVER['HTTP_USER_AGENT'];
    $pagina "http://" $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];
     
    // creo il testo
    $testo "<br />".$data."<br />";
    $testo $testo."\n\rPagina visitata: ".$pagina."<br />";
    $testo $testo."\n\rIndirizzo IP: ".$ip."<br />";
    $testo $testo."\n\rProvenienza connessione: ".$provenienza."<br />";
    $testo $testo."\n\rAltre info: ".$altre_info."<br />";
    $testo $testo."\n\r------\n\r"

    Scrivo anche i <br /> perchè, quando vado a recuperare le informazioni con
    Codice PHP:
    echo file_get_contents(".PERCORSO FILE"
    il risultato sarà ordinato e fluido nella lettura.
    E' corretto come ragionamento?

    Dipende da cosa ti interessa sapere.
    1) può darti una classifica delle pagine che hanno più successo
    2) ... boh, in riferimento a cosa? A tutti gli altri punti? Al limite puoi scoprire se ci sono particolari periodi in cui le visite aumentano o diminuiscono, oppure per "provare" (non in termini legali, perché la data puoi cambiarla a piacimento) quando è avvenuta una certa cosa.
    3) l'IP di solito si tiene se ci fosse bisogno di risalire ad un utente o per capire da dove provengono i visitatori geograficamente
    4) sempre a fini statistici quale pagina ha maggior efficacia per mandare gli utenti su un determinato contenuto se raggiungibile da posti diversi
    5) per capire su quale browser focalizzarti se per esempio il CSS del sito non può soddisfarli tutti allo stesso modo
    1) Esatto, e cercare di migliorare quelle con meno visibilità.
    2) Mi serve come riferimento per capire il periodo, quanti visitatori ci sono stati nella giornata o anche solo un andamento settimanale. Tutti questi dati verranno rielaborati una volta copia incollati su un foglio excel.
    3) Mi torna anche utile per capire se le varie visite sono state fatte da un solo utente oppure no. Un identificativo anche se identifica ben poco.
    4) Si, oltre che capisco se il traffico arriva maggiormente dai social rispetto alla ricerca organica ecc
    5) Ti dirò, non riesco bene a interpretarlo.


    Ti posto alcuni esempi:
    - Mozilla/5.0 (compatible; spbot/5.0.3; +http://OpenLinkProfiler.org/bot )
    - Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) - Chrome/59.0.3071.115 Safari/537.36
    - SafeDNSBot (https://www.safedns.com/searchbot)
    - Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.96 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
    ...........


    PHP non ne sa niente di ciò che accade sul frontend, quindi non può dirti quanto tempo un utente sta su una pagina. Lavorando però con le sessioni magari ci riesci, ogni pagina visitata deve dichiarare il timestamp in cui ci si è arrivati, così al cambio di pagina ti basta una sottrazione tra timestamps per sapere il tempo trascorso tra un cambio pagina e l'altro, chiaramente non saprai quanto tempo l'utente è stato sull'ultima pagina, perché non avrà riscontro se chiude il tuo sito.
    Sapere quanto tempo un utente rimane sull'ultima pagina è così importante?
    Secondo me è una informazione che può tranquillamente non essere raccolta.
    Non si riesce a ricavare il timestamp quando un utente chiude la pagina per cambiare sito o il browser stesso? Google Analytics come ci riesce?

    Se poi questi dati li devi elaborare, sicuramente userei il DB, ma tenendo a mente quanto il sito è frequentato, quanto quindi crescerebbero i dati raccolti considerando l'eventualità di eliminare quelli più vecchi di tot per non rischiare di riempire il DB solo di log.
    Poco frequentato, penso che l'eccessivo peso dei dati non sarà mai un problema.
    Eventualmente i dati in eccesso li cancelleresti con un batch o manualmente?


    Hai qualche consiglio da darmi o accorgimento da tenere a mente?


    Grazie ancora per la risposta e scusa per le numerose domande


    Buona serata.
    Studio grafico torino di Serena Grafic@

  4. #4
    Utente di HTML.it L'avatar di SerenaGrafic@
    Registrato dal
    Jul 2016
    residenza
    Piemonte
    Messaggi
    25
    Buonasera,
    ho provato ad usare il seguente codice:

    Codice PHP:
    // raccolgo informazioni
    $provenienza $_SERVER['HTTP_REFERER'];
    $data date('Y-m-d H:i:s');;
    $ip $_SERVER['REMOTE_ADDR'];
    $altre_info $_SERVER['HTTP_USER_AGENT'];
    $pagina "http://" $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


     
    if(empty(
    $_SESSION['timestamp'])) {
      
    $t time();
      
    $b $_SESSION['timestamp'] - $t;
      
    $ore $b 3600 24;   
      
    $minuti $b 60 60;   
      
    $secondi $b 60;    
      
      
    $permanenza $ore.":".$minuti.":".$secondi;
      global 
    $permanenza;
        
      
    $_SESSION['timestamp'] = $t;
    }


    else {
        
    $_SESSION['timestamp'] = time();    
    }
      
    // creo il testo
    $testo "<br />".$data."<br />";
    $testo $testo."\n\rPagina visitata: ".$pagina."<br />";
    $testo $testo."\n\rIndirizzo IP: ".$ip."<br />";
    $testo $testo."\n\rProvenienza connessione: ".$provenienza."<br />";
    $testo $testo."\n\rDurata ultima provenienza nota: ".$permanenza."<br />";
    $testo $testo."\n\rAltre info: ".$altre_info."<br />";
    $testo $testo."\n\r------\n\r"

    Ma mi rilascia questo risultato:

    Durata ultima provenienza nota: -20:-26:-20

    Dove sbaglio? Vorrei che mi rilasciasse 00:00:30 se ad esempio un utente è stato sulla pagina 30 secondi.

    Inoltre sul server locale mi viene rilasciata questa notifica => Undefined variable: _SESSION, come posso risolvere?

    Grazie, buona serata.
    Ultima modifica di SerenaGrafic@; 15-07-2017 a 22:36
    Studio grafico torino di Serena Grafic@

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    9
    Hai invertito le condizioni sul controllo della sessione... prova a cambiare
    empty($_SESSION['timestamp'])
    in
    !empty($_SESSION['timestamp'])

  6. #6
    Utente di HTML.it L'avatar di SerenaGrafic@
    Registrato dal
    Jul 2016
    residenza
    Piemonte
    Messaggi
    25
    Ciao mr_web, grazie per la risposta. Purtroppo non mi stampa nulla ç__ç
    Tu hai provato e funziona?

    Grazie, buona serata.
    Studio grafico torino di Serena Grafic@

  7. #7
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Codice PHP:
    if(empty($_SESSION['timestamp'])) {
      
    $t time();
      
    $b $_SESSION['timestamp'] - $t
    E' il contrario: devi fate $t - $_SESSION['timestamp'] . $t è certamente più grande di quello in sessione, visto che lo prendi al momento

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2009
    Messaggi
    9
    Quote Originariamente inviata da SerenaGrafic@ Visualizza il messaggio
    Ciao mr_web, grazie per la risposta. Purtroppo non mi stampa nulla ç__ç
    Tu hai provato e funziona?

    Grazie, buona serata.
    Ogni volta che lavori con le variabili di sessione, devi ricordarti di aggiungere come prima istruzione dello script la chiamata alla funzione session_start();
    In questo modo dovrebbe funzionare anche a te.

  9. #9
    Utente di HTML.it L'avatar di SerenaGrafic@
    Registrato dal
    Jul 2016
    residenza
    Piemonte
    Messaggi
    25
    Ciao boots e mw_web,
    grazie mille per il vostro aiuto, ora funziona!

    Questo è lo script finale:

    Codice PHP:
    session_start();


    // raccolgo le informazioni
    $provenienza $_SERVER['HTTP_REFERER'];
    $data date('Y-m-d H:i:s');;
    $ip $_SERVER['REMOTE_ADDR'];
    $altre_info $_SERVER['HTTP_USER_AGENT'];
    $pagina "http://" $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];


     
    if(!empty(
    $_SESSION['timestamp'])) {
      
    $t time();
      
    $b $t $_SESSION['timestamp'];
      
    $ore $b 3600 24;   
      
    $minuti $b 60 60;   
      
    $secondi $b 60;    
      
      
    $permanenza $ore.":".$minuti.":".$secondi;
      global 
    $permanenza;
        
      
    $_SESSION['timestamp'] = $t;
    }


    else {
        
    $_SESSION['timestamp'] = time();    
    }
      
    // creo il testo
    $testo "<br />".$data."<br />";
    $testo $testo."\n\rPagina visitata: ".$pagina."<br />";
    $testo $testo."\n\rIndirizzo IP: ".$ip."<br />";
    $testo $testo."\n\rProvenienza connessione: ".$provenienza."<br />";
    $testo $testo."\n\rDurata ultima provenienza nota: ".$permanenza."<br />";
    $testo $testo."\n\rAltre info: ".$altre_info."<br />";
    $testo $testo."\n\r------\n\r";

    // scrivo sul file
    $var=fopen("log.txt","a");
    fwrite($var,$testo);
    fclose($var); 

    Se qualcuno ha dei consigli su come potrebbe essere migliorato, cosa potrebbe essere aggiunto, riflessioni varie sui file di log, sarò lieta di leggerli!

    Buona serata a tutti.
    Studio grafico torino di Serena Grafic@

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.