Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    Ottimo contatore di accessi

    Già in precedenza ho fatto una pillolina che spiegava come poter realizzare un semplice contatore di accessi,era un pò rudimentale
    anche perchè se il visitatore aveva i cookie bloccati lo contava più volte.
    Questo contatore è un pò più sofisticato,anche se nel codice è molto semplice.
    Questo script non fa uso ne di cookie e ne di sessioni ma fa dei controlli sul database, quindì se il visitatore ha i cookie bloccati a noi "nun c n fott proprio" tradotto non ce ne frega.
    Inoltre permette di calcolarci L'ora dell'ultimo accesso del visitatore visto che se lo trova nel database aggiorna solo l'ora di un campo che l'ho chiamato uscita.
    Lo script può essere ampliabile facilmente.

    Incominciamo con la creazione del database:
    creaiamo una database e dentro creiamo una tabella con 5 campi così strutturata
    1° campo: nome_campo="id" tipo_di_dati="int" opzione="auto_increment"
    2° campo: nome_campo="data" tipo_di_dati="varchar" caratteri="20"
    3° campo: nome_campo="ora" tipo_di_dati="varchar" caratteri="20"
    4° campo: nome_campo="ip" tipo_di_dati="varchar" caratteri="20"
    5° campo: nome_campo="uscita" tipo_di_dati="varchar" caratteri="20"

    questo è il comando mysql per creare la tabella sopra citata

    codice:
    CREATE TABLE `visite` (
      `id` int(11) NOT NULL auto_increment,
      `data` varchar(20) NOT NULL default '',
      `ora` varchar(20) NOT NULL default '',
      `ip` varchar(20) NOT NULL default '',
      `uscita` varchar(20) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) TYPE=MyISAM
    Questo sotto è lo script

    Codice PHP:
    <?
    //ricavo la data giorno/mese/anno
    $giorno=date("d/m/Y");
    //ricavo l'orario ore:minuti:secondi
    $ora=date("H:i:s");
    //ricavo l'ip dell'utente
    $ip getenv("REMOTE_ADDR");
    //mi connetto al database mySql
    $db=mysql_connect("nomehost","user","pass") or die ("Errore durante la connessione al database");
    //creo la query che si va a cercare se l'utente ha gia visitato il sito oggi
    $sql="Select * from visite WHERE data=\"$giorno\" && ip=\"$ip\"";
    //applico la query
    $result=mysql_db_query("statistiche",$sql,$db);
    //calcolo il numero di righe
    $num_rows=mysql_num_rows($result);
    //vede se il numero di righe e maggiore di 0 cioè se l'utente è già passato nel sito in giornata
    if($num_rows>0)
    {
    //se si mi prendo l'identificatore di chi è passato
    $id=mysql_result($result,$num_rows-1,"id");
    //creao la query che mi aggiorna la data d'uscita dell'utente
    $sql="UPDATE `visite` SET `uscita` = \"$ora\" WHERE `id` = \"$id\" LIMIT 1" ;
    //applico la query
    $result=mysql_db_query("statistiche",$sql,$db);
    }
    //se $num_rows non è maggiore di 0
    else
    {
    //creo la query sql che va ad inserire il visitatore nel database
    $sql="INSERT INTO visite (data,ip,ora) VALUES('".$giorno."','".$ip."','".$ora."')";
    //applico la query sul database
    mysql_db_query("statistiche",$sql,$db);
    mysql_close();
    };
    //fine inserimento

    ?>

    <?
    //Lettura

    $query ="SELECT count(id) FROM visite";
    //applico la query
    $result mysql_db_query('statistiche',$query,$db);
    $visite=mysql_result($result,0);
    ?>
    Per far funzionare questo script basta creare una pagina php con il codice che ho scritto e la includiamo in tutte le pagine del nostro sito esempio:

    Codice PHP:
    <?
    include"contatore.php";
    echo 
    "$visite";
    ?>

  2. #2
    carmine, permettimi di dissentire su una cosa di concetto in termini costruttivi
    non puoi contare il numero di record con l'identificatore univoco di record
    puoi fare
    codice:
    SELECT COUNT(id) AS record_totali FROM tabella
    che è una cosa un po' diversa

    un altro appunto, www.php.net/mysql_db_query è una funzione deprecata, meglio utilizzare www.php.net/mysql_select_db e www.php.net/mysql_query

    ciao e buon lavoro
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  3. #3
    pardon, doppio
    E' la mia opinione ed io la condivido
    Non condivido la tua idea ma darei la vita perché tu la possa esprimere (Voltaire)
    Scrivi sul muro

  4. #4
    Originariamente inviato da boomboom69
    carmine, permettimi di dissentire su una cosa di concetto in termini costruttivi
    non puoi contare il numero di record con l'identificatore univoco di record
    puoi fare
    codice:
    SELECT COUNT(id) AS record_totali FROM tabella
    che è una cosa un po' diversa

    un altro appunto, www.php.net/mysql_db_query è una funzione deprecata, meglio utilizzare www.php.net/mysql_select_db e www.php.net/mysql_query

    ciao e buon lavoro
    Grazie!!!
    Non so perchè ma divento sempre più distratto e dimentico sempre le funzioni mysql.

  5. #5
    Ciao Carmine,

    mi sono permesso di apportare delle piccole modifiche al tuo script.
    Invece di controllare il giorno dell'ultima visita, controlla se il visitatore è passato per quella pagina nell'ultima ora.

    Codice PHP:
    include ("include/config.php");
    //ricavo la data giorno/mese/anno
    $giorno=date("d/m/Y");
    //ricavo l'orario ore:minuti:secondi
    $ora=date("H:i:s");
    //ricavo l'ora e la data ore/giorno/mese/anno
    $ora2=date("H/d/m/Y");
    //ricavo l'ip dell'utente
    $ip getenv("REMOTE_ADDR");
    //mi connetto al database mySql
    $db=mysql_connect("localhost") or die ("Errore durante la connessione al database");
    //creo la query che si va a cercare se l'utente ha gia visitato il sito nell'ora attuale di oggi
    $sql="Select * from visite WHERE ora2=\"$ora2\" && ip=\"$ip\"";
    //applico la query
    $result=mysql_query($sql);
    //calcolo il numero di righe
    $num_rows=mysql_num_rows($result);
    //vede se il numero di righe e maggiore di 0 cioè se l'utente è già passato nel sito in giornata
    if($num_rows>0)
    {
    //se si mi prendo l'identificatore di chi è passato
    $id=mysql_result($result,$num_rows-1,"id");
    //creao la query che mi aggiorna la data d'uscita dell'utente
    $sql="UPDATE `visite` SET `uscita` = \"$ora\", `ora2` = \"$ora2\"  WHERE `id` = \"$id\" LIMIT 1" ;
    //applico la query
    $result=mysql_query($sql);
    }
    //se $num_rows non è maggiore di 0
    else
    {
    //creo la query sql che va ad inserire il visitatore nel database
    $sql="INSERT INTO visite (data,ip,ora,ora2) VALUES('".$giorno."','".$ip."','".$ora."','".$ora2."')";
    //applico la query sul database
    mysql_query($sql);
    mysql_close();
    };
    //fine inserimento

    ?> 
    Codice PHP:
    <?
    //Lettura

    $query ="SELECT count(id) FROM visite";
    //applico la query
    $result=mysql_query($query) or die(mysql_error());
    $visite=mysql_result($result,0);
    ?>
    Funziona, però all'apertura mi da il seguente errore

    Can't connect to MySQL server on 'localhost' (10061)

    Successivamente aggiornando la pagina mi visualizza il numero dei visitatori aggiornato

  6. #6
    al mare????????????????????

  7. #7
    rieccomi

  8. #8
    Ciao sono tornato dalle vacanze 5 giorni fa.
    Il problama sta nella riga di connessione.
    $db=mysql_connect("localhost","nomeutente","pass") ;
    e poi se non vuoi utilizzare
    mysql_db_query();
    ma vuoi utilizzare
    mysql_query();
    Devi fare prima
    mysql_select_db();

  9. #9
    ciao Carmine,
    grazie per la risposta.
    Adesso grazie a te funziona.
    Ciao alla prossima

  10. #10
    Utente di HTML.it
    Registrato dal
    May 2004
    Messaggi
    390

    X carmineabomb

    Ciao carmineabomb

    ho visto lo script che hai realizzato per il contatore di accessi è molto notevole;

    vorrei chiederti un aiuto, che per te non dovrebbe essere molto impegnativo,
    se vai su questo link trovi il mio problema

    http://forum.html.it/forum/showthrea...hreadid=718413


    Grazie
    spero che tu mi risponda....

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 © 2025 vBulletin Solutions, Inc. All rights reserved.