Visualizzazione risultati 1 fino 8 di 8

Discussione: Creare un contatore di visite

  1. #1
    Guest

    Wink Creare un contatore di visite

    Salve a tutti come posso creare un contatore di visite senza databse? in poche parole io ho bisogno di creare un contatore di visite per una pagina che poi mi crea anche un grafico per il grafico avevo pensatto alle librerie GD ma non so, voi avete qualche idea?

    EDIT:

    ecco sono riuscito a fare il grafico per il contatore nessuno ha idea?

    Codice PHP:
    <?
    // valori da visualizzare
    $valori=@array(0,70,20,16,170,210,66,79,103,199,222);

    //caratteristiche dell'immagine
    $Width=250;
    $Height=250;
    $img=@imagecreate($Width, $Height);

    //sfondo di colore giallo
    $sfondo=@imagecolorallocate($img, 255, 255, 204);
    //griglia sul grigio
    $griglia=@imagecolorallocate($img, 204, 204, 204);
    //linea sul rosso
    $linea=@imagecolorallocate($img, 153, 0, 0);

    //bordi
    @imageline($img, 0, 0, 0, 250, $griglia);
    @
    imageline($img, 0, 0, 250, 0, $griglia);
    @
    imageline($img, 249, 0, 249, 249, $griglia);
    @
    imageline($img, 0, 249, 249, 249, $griglia);
    for (
    $i=1; $i<11; $i++){
    @
    imageline($img, $i*25, 0, $i*25, 250, $griglia);
    @
    imageline($img, 0, $i*25, 250, $i*25, $griglia);
    }

    //linea del grafico
    for ($j=0; $j<10; $j++){
    @
    imageline($img, $j*25, (250-$valori[$j]), ($j+1)*25, (250-$valori[$j+1]), $linea);
    }

    //mostriamo il grafico
    @header("Content-type: image/gif");
    @
    imagegif($img);
    @
    imagedestroy($img);
    ?>
    Ultima modifica di zomer : 17-09-2009 alle ore 20.48.03

  2. #2
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,771

    Predefinito

    Non so se ho capito bene quello che vuoi, cmq per il contatore scrivi questo codice:
    Codice PHP:
    <?php
    $fp
    = fopen("counter.txt","r+");
    $fr = fread($fp, filesize("counter.txt"));
    if (!isset(
    $_SESSION["visits"])) {
    $fw = fwrite("counter.txt", $fr++);
    fclose($fp);
    $fp1 = fopen("counter.txt","r");
    $fr1= fread($fp, filesize("counter.txt"));
    echo
    $fr1;
    }else {
    $fp1 = fopen("counter.txt","r");
    $fr1= fread($fp, filesize("counter.txt"));
    echo
    $fr1;
    }
    ?>
    Mi pare semprice questo script, cmq apre un file e si prepara ad inclementare il numero all'interno ogni volta che un nuovo utente effettua l'accesso.

    Il controlla sulla sessione serve ad evitare che lo stesso utente, aggiornando la pagina inclementi di nuovo la sua visita.

    Non ricordo, ma per usare le sessioni mi sempra che occore specificare all'inizio del codice della pagina session_start() e session_register()
    Ultima modifica di sevenjeak : 19-09-2009 alle ore 17.11.23

    Sevenjeak
    Software developer and much more

  3. #3
    Guest

    Predefinito

    Prima di tutto, elimina tutti quei @ prima delle funzioni, no nsi dovrebbero mettere nemmeno quando si ha la sicurezza che non generino Warning o Notice

  4. #4
    Guest

    Predefinito

    Ti passo la classe che uso nel mio cms:
    Codice PHP:
    <?php
    class Counter {
    private
    $counter = 0,$ip;
    public function
    __construct() {
    $this->counter = (int)file_get_contents("db/counter.txt");
    $this->ip = array_map('clear',file("db/ip.txt"));
    $time = array_shift($this->ip);
    if((
    $time + 86400) < time()) {
    $fp = fopen("db/ip.txt","w");
    fputs($fp, time());
    fclose($fp);
    }
    if(empty(
    $_SERVER['QUERY_STRING'])) {
    if(!
    in_array($_SERVER['REMOTE_ADDR'],$this->ip)) {
    file_put_contents("db/counter.txt", ++$this->counter);
    file_put_contents("db/ip.txt", $time."\r\n".$_SERVER['REMOTE_ADDR']."\r\n");
    }
    }
    }
    public function
    getValue() {
    return
    $this->counter;
    }
    }
    ?>
    Spiegazione sui metodi (spero che non sia spam): http://nogcms.altervista.org/api/counter/
    Ovviamente devi cambiare i percorsi dei files che vengono usati.

  5. #5
    Guest

    Predefinito

    Citazione Originalmente inviato da gabryhacker Visualizza messaggio
    Ti passo la classe che uso nel mio cms:
    Codice PHP:
    <?php
    class Counter {
    private
    $counter = 0,$ip;
    public function
    __construct() {
    $this->counter = (int)file_get_contents("db/counter.txt");
    $this->ip = array_map('clear',file("db/ip.txt"));
    $time = array_shift($this->ip);
    if((
    $time + 86400) < time()) {
    $fp = fopen("db/ip.txt","w");
    fputs($fp, time());
    fclose($fp);
    }
    if(empty(
    $_SERVER['QUERY_STRING'])) {
    if(!
    in_array($_SERVER['REMOTE_ADDR'],$this->ip)) {
    file_put_contents("db/counter.txt", ++$this->counter);
    file_put_contents("db/ip.txt", $time."\r\n".$_SERVER['REMOTE_ADDR']."\r\n");
    }
    }
    }
    public function
    getValue() {
    return
    $this->counter;
    }
    }
    ?>
    Spiegazione sui metodi (spero che non sia spam): http://nogcms.altervista.org/api/counter/
    Ovviamente devi cambiare i percorsi dei files che vengono usati.
    ma in php i costruttori si chiamano metodi principali?



    Cosi dovrebbe andare anche no?
    Codice PHP:
    <?php
    $fp
    = fopen("counter.txt","r+");
    $fr = fread($fp, filesize("counter.txt"));
    if (!isset(
    $_SESSION["visits"])) {
    fwrite("counter.txt", $fr++);
    }
    echo
    $fr;
    ?>
    Ultima modifica di Xsescott : 19-09-2009 alle ore 22.43.44

  6. #6
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,771

    Predefinito

    Aspe... quello script io lo provato solamente per alcuni siti che ho fatto io, no per i cms gia fatti

    Sevenjeak
    Software developer and much more

  7. #7
    Guest

    Smile

    mmm..si piu o meno avete capito cosa vado cercando, però, mi sorge un problema, ora vi spiego meglio le funzione che dovrebbe avere lo script.
    In un file txt (o anche db ma credo che is farebbero troppe query) si dovrebbe salvare il numero di visite totali NELLA GIORNATA, di quella pagina, poi il giorno dopo si salva un altro nuemro, in modo che succesivamente posso creare un array e creare un grafico delle vistie con le GD2 come potrei fare?

    P.S. Mi hanno detto che però la CPU sarà altissima per mezzo della creazione delle immagini, mi devo spaventare?

  8. #8
    L'avatar di sevenjeak
    sevenjeak non è connesso AlterGuru
    Data registrazione
    25-10-2007
    Residenza
    Roma
    Messaggi
    1,771

    Predefinito

    non so se andra bene, potresti usare un'arey cosi composta:
    Codice PHP:
    Array[0=> data corrente, 1 => data del giorno dopo]
    E porre a PHP la condizione che: se la data corrente risulta uguare alla data presente nell'indice 1 dell'array valorizza l'indice 0 con la data corrente, l'indice uno con la data del giorno dopo e crei un nuovo file dove andranno il numero di visiti del giorno, altrimenti aumenta la visita sul file che hai gia creato ( ovviamente se è per giorni il file dovra cambiare )
    P.S.: Se vede che l'immagine si carica lentamente prova a crearla nell' onload del <body>, con Javascript si puo fare ma con php non sicuro, prova intanto
    Ultima modifica di sevenjeak : 25-09-2009 alle ore 11.45.11

    Sevenjeak
    Software developer and much more

Regole di scrittura

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