Visualizzazione risultati 1 fino 29 di 29

Discussione: Creare un servizio di statistiche "professionale"

  1. #1
    Guest

    Predefinito Creare un servizio di statistiche "professionale"

    Salve sono ancora io il vostro caro AngelBot, ho trovato questo: http://forum.it.altervista.org/php-m...atistiche.html
    ma non mi è piaciuto e allora ho preso solo delle parti e l'ho unito alle mie conoscenze però anche io ho un limite. Ora vi posto il codice che ho semi-creato sperando che qualcuno mi aiuti a modificarlo come scritto sotto il codice.
    Codice PHP:
    <?php
    /// Mi connetto al Database
    mysql_connect("localhost","angelbot","") or die(mysql_error());
    mysql_select_db("my_angelbot") or die(mysql_error());

    /// Includo i file che contengono i Browser e i sistemi operativi divisi per categoria
    include('browser.inc.php');
    include(
    'os.inc.php');
    include(
    'lingua.inc.php');

    $ip = $_SERVER['REMOTE_ADDR'];

    if(
    $ip == $ip_database){
    $sql = "INSERT INTO statistiche (pagina,browser,lingua,referer,os) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\")";
    mysql_query($sql) or die(mysql_error());
    }else{
    $sql = "INSERT INTO statistiche (pagina,browser,lingua,referer,os,visite,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\",\"".$visita."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    }
    ?>
    Questo script dovrebbe:
    Se l'indirizzo IP è già presente nel database allora deve inserire:
    La pagina corrente, il browser, la lingua usata, il referer e il sistema operativo usato.
    Se l'indirizzo IP non è presente nel database:
    La pagina corrente, il browser, la lingua usata, il referer, il sistema operativo usato, aumenta il contatore di + 1 visita e memorizza l'ip.

    Come vedrete dagli include per il sistema operativo, la lingua, e il browser ho fatto una divisione speciale per i vari os, browser e lingue.

    Però voglio che poi quando leggo mi dice quante volte e stato usato il browser la lingue e il sistema operativo ma per questo credo che si debba operare dopo.

    A presto e grazie per chi mi aiuta.

  2. #2
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova così (devi creare la tabella "visite" formata da una sola riga con il campo "contatore" settato a "0"):
    Codice PHP:
    <?php
    // Mi connetto al Database
    mysql_connect("localhost","angelbot","") or die(mysql_error());
    mysql_select_db("my_angelbot") or die(mysql_error());

    // Includo i file che contengono i Browser e i sistemi operativi divisi per categoria
    include("browser.inc.php");
    include(
    "os.inc.php");
    include(
    "lingua.inc.php");

    $ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);

    $risultato=mysql_query("SELECT * FROM statistiche WHERE ip='{$ip}' LIMIT 1");
    if (
    mysql_num_rows($risultato)>0) {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\")";
    mysql_query($sql) or die(mysql_error());
    }
    else {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    mysql_query("UPDATE visite SET contatore=contatore+1");
    }
    ?>
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  3. #3
    Guest

    Predefinito

    Ciao funcool, grazie del tuo intervento lo script funziona bene nell'inserimento dei dati ecc, ma ora, se vuoi, potresti dirmi con phpMyAdmin (l'ultima versione) come si imposta il contatore a 0?

    P.S. Ho dovuto creare anche le altre righe altrimenti lo script non funzionava.

  4. #4
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dopo che hai creato la tabella "visite" inserisci una riga con il valore 0.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  5. #5
    Guest

    Predefinito

    Scusa sapresti darmi maggiori indicazioni o al massimo la query SQL da eseguire?

  6. #6
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dopo che sei entrato nella tabella clicca su "Inserisci" e inserisci una riga con scritto "0".
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  7. #7
    Guest

    Predefinito

    Lo stesso non riesco mi dai il codice SQL?

  8. #8
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice:
    INSERT INTO visite VALUES ('0')
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  9. #9
    Guest

    Predefinito

    Ottimo ho creato la tabella visite, l'ho impostato a 0 con il tuo codice, poi ho un altra tabella con browser, os, ecc ma ora per estrarre i vari dati basta il codice normale vero?

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Cosa intendi per codice normale?
    Per estrarre i dati da una tabella devi eseguire una query che inizia con "SELECT".
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    Guest

    Predefinito

    Scusa dicevo questo:
    Codice PHP:
    mysql_connect("localhost","angelbot","") or die(mysql_error());
    mysql_select_db("my_angelbot") or die(mysql_error());

    $sql = 'SELECT COUNT( * ) AS `Righe` , `browser` FROM `statistiche` GROUP BY `browser` ORDER

    BY `browser` LIMIT 0, 30 '
    ;

    $r = mysql_query($sql) or die(mysql_error());
    echo
    $r;
    ?>
    Ma mi stampa Resource id #3

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Al posto di:
    Codice PHP:
    echo $r;
    Metti:
    Codice PHP:
    while($result=mysql_fetch_array($r))
    echo
    $result['browser'].": ".$result['Righe']."<br />";
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    Così posso fare anche per gli OS, le lingue ecc, ma per le visite totali uniche?

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice PHP:
    // Metti connessione al database e poi...
    $r=mysql_query("SELECT contatore FROM visite LIMIT 1") or die(mysql_error());
    echo
    mysql_result($r,0);
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  15. #15
    Guest

    Predefinito

    Ottimo come hai fatto per miky92 nell'altro topic anche qui si può mettere le visite totali uniche e quelle giornaliere (sempre uniche)?

  16. #16
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Con lo script che hai ora non è possibile; se lo vuoi fare, copia dall'altra discussione.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  17. #17
    Guest

    Predefinito

    No va beh non è tanto importante, non mi serve più di tanto era solo una curiosità.
    Ora se non disturbo troppo posso chiederti un altro favore?
    Gli include del contatore distinguevano i vari browser, os, lingue, ecc. Però ho notato che se faccio:
    Codice PHP:
    if(eregi("msie",$ua)){
    $browser = "Internet Explorer";
    }
    if(
    eregi("mozilla",$ua)){
    $browser = "Mozilla";
    }
    if(
    eregi("Firefox",$ua)){
    $browser = "Mozilla FireFox";
    }
    if(
    eregi("netscape",$ua)){
    $browser = "NetScape";
    }
    if(
    eregi("safari",$ua)){
    $browser = "Safari";
    }
    Usando Internet Explorer mi viene segnalato come Mozilla, allora ho pensato di eliminare la voce di Mozilla cosi da essere più preciso sulla distinzione, posso fare in modo che se il browser usato non è tra i seguenti venga aggiunto come "Altro"?

  18. #18
    Guest

    Predefinito

    $ua = $_SERVER['HTTP_USER_AGENT']; vero?

    Puoi utilizzare 2 metodi:

    1°-elseif -->
    Codice PHP:
    <?php
    if(IE){ ....} elseif(FIREFOX){ ... } ELSE { echo"non riconosciuto!"; }
    ?>
    2°-switch -->
    Codice PHP:
    <?php
    switch ($ua) {
    case
    "IE":
    echo
    "Internet Explorer";
    break;
    case
    "FIREFOX":
    echo
    "Firefox";
    break;
    default:
    echo
    "Non lo so";
    break;
    }
    ?>
    Comunque se vuoi vedere uno script che riconosce il browser tra molti :
    http://apptools.com/phptools/browser/source.php

    Ed ecco la lista degli http user agents esistenti:
    http://www.user-agents.org/
    ;)
    Ultima modifica di comunitavirtuali : 10-02-2008 alle ore 11.11.14

  19. #19
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dai un'occhiata qui per il problema di Mozilla.
    Per "Altro" puoi fare così (risolveresti anche il problema di Internet Explorer denominato Mozilla):
    Codice PHP:
    if (eregi("msie",$ua))
    $browser="Internet Explorer";
    elseif(
    eregi("mozilla",$ua))
    $browser="Mozilla";
    elseif(
    eregi("Firefox",$ua))
    $browser="Mozilla FireFox";
    elseif(
    eregi("netscape",$ua))
    $browser="NetScape";
    elseif(
    eregi("safari",$ua))
    $browser="Safari";
    else
    $browser="Altro";
    EDIT: Il secondo metodo di Comunitavirtuali non può funzionare perché $ua non è uguale al nome del browser.
    Ultima modifica di funcool : 10-02-2008 alle ore 11.11.50
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  20. #20
    Guest

    Predefinito

    Si grazie proverò il tuo consiglio...e anche il tuo tools ma mi sono dimenticato di chiedere a funcool come posso escludere i referer dal mio sito e se con un str_replace() posso sostituire lo spazio vuoto con un "Accesso Diretto".

    EDIT: Funcool hai mancato le graffe o si possono omettere?
    Ultima modifica di AngelBot : 10-02-2008 alle ore 11.12.44

  21. #21
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Per il referer puoi utilizzare $_SERVER['HTTP_REFERER'].
    Se è uguale a "", inserisci nel database "Accesso Diretto" invece che $_SERVER['HTTP_REFERER'].
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  22. #22
    Guest

    Predefinito

    No, scusa non hai capito, ho inserito già quella voce, per il referer vuoto posso fare cosi:
    Codice PHP:
    <?php
    mysql_connect
    ("localhost","angelbot","") or die(mysql_error());
    mysql_select_db("my_angelbot") or die(mysql_error());

    if(
    $_SERVER['HTTP_REFERER'] == ""){

    // Includo i file che contengono i Browser e i sistemi operativi divisi per categoria
    include("browser.inc.php");
    include(
    "os.inc.php");
    include(
    "lingua.inc.php");

    $ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);
    $ref = "Accesso Diretto";
    $risultato=mysql_query("SELECT * FROM statistiche WHERE ip='{$ip}' LIMIT 1");
    if (
    mysql_num_rows($risultato)>0) {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$ref."\",\"".$os."\")";
    mysql_query($sql) or die(mysql_error());
    }
    else {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    mysql_query("UPDATE visite SET contatore=contatore+1");
    }
    ///Else Referer
    }else{
    // Includo i file che contengono i Browser e i sistemi operativi divisi per categoria
    include("browser.inc.php");
    include(
    "os.inc.php");
    include(
    "lingua.inc.php");

    $ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);

    $risultato=mysql_query("SELECT * FROM statistiche WHERE ip='{$ip}' LIMIT 1");
    if (
    mysql_num_rows($risultato)>0) {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\")";
    mysql_query($sql) or die(mysql_error());
    }
    else {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    mysql_query("UPDATE visite SET contatore=contatore+1");
    }
    /// Chiudo l'else referer
    } ?>
    Io volevo sapere, come posso eliminare i referer dal mio sito, cioè se si accede a statistiche da http://angelbot.altervista.org/una_qualsiasi_pagina.php da una qualsiasi pagina, non contare i referer del mio sito.
    Ultima modifica di AngelBot : 10-02-2008 alle ore 11.21.48 Motivo: Tag [/php]

  23. #23
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Codice PHP:
    if (strpos($_SERVER['HTTP_REFERER'],"angelbot.altervista.org")) {
    // Non inserire
    }
    else {
    // Inserisci
    }
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  24. #24
    Guest

    Predefinito

    Scusami non ho capito, questo è il codice del contatore:
    Codice PHP:
    <?php
    // Mi connetto al Database
    mysql_connect("localhost","angelbot","") or die(mysql_error());
    mysql_select_db("my_angelbot") or die(mysql_error());

    // Includo i file che contengono i Browser e i sistemi operativi divisi per categoria
    include("browser.inc.php");
    include(
    "os.inc.php");
    include(
    "lingua.inc.php");

    if(
    $_SERVER['HTTP_REFERER'] == ""){

    $ref = "Accesso Diretto";
    $ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);

    $risultato=mysql_query("SELECT * FROM statistiche WHERE ip='{$ip}' LIMIT 1");
    if (
    mysql_num_rows($risultato)>0) {
    $sql="INSERT INTO statistiche (pagina,referer) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$ref."\")";
    mysql_query($sql) or die(mysql_error());
    }else {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$ref."\",\"".$os."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    mysql_query("UPDATE visite SET contatore=contatore+1");
    }

    }else{

    $ip=mysql_escape_string($_SERVER['REMOTE_ADDR']);

    $risultato=mysql_query("SELECT * FROM statistiche WHERE ip='{$ip}' LIMIT 1");
    if (
    mysql_num_rows($risultato)>0) {
    $sql="INSERT INTO statistiche (pagina,referer) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$_SERVER['HTTP_REFERER']."\")";
    mysql_query($sql) or die(mysql_error());
    }else {
    $sql="INSERT INTO statistiche (pagina,browser,lingua,referer,os,ip) values(\"".$_SERVER['SCRIPT_NAME']."\",\"".$browser."\",\"".$lingua."\",\"".$_SERVER['HTTP_REFERER']."\",\"".$os."\",\"".$ip."\")";
    mysql_query($sql) or die(mysql_error());
    mysql_query("UPDATE visite SET contatore=contatore+1");
    }}
    ?>
    Come devo collegarmi con te?

  25. #25
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Dipende se vuoi inserire o meno i dati nel database se il referer è il tuo sito. Comunque è molto semplice, non sai come funziona un if?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  26. #26
    Guest

    Predefinito

    Certo che so come funziona ma non ho capito tanto bene come farlo funzionare con il tuo script. Comunque ho ripescato nella discussione di miky92 che tu hai fatto in modo che quando estraeva i dati bloccava il suo sito...si può fare anche a me?

  27. #27
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Certo che si può fare, il procedimento è il medesimo.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  28. #28
    Guest

    Predefinito

    Questo è il codice
    Codice PHP:
    $sql = 'SELECT COUNT( * ) AS `Righe` , `referer` FROM `statistiche` GROUP BY `referer` ORDER BY `referer` LIMIT 0, 30 ';
    $result = mysql_query($sql) or die(mysql_error());
    while(
    $ris=mysql_fetch_array($result)) {
    if (!
    strpos($ris['provenienza'],"localhost"))
    echo
    $result['referer']. " | <span class=\"rosso\">".$result['Righe']."</span> volte.<br />";
    }
    e mi stampa
    Codice:
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.
    | volte.

  29. #29
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Nell'if hai utilizzato "provenienza" al posto di "referer" e poi quando stampi utilizzi $result al posto di $ris.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •