Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 25

Discussione: [php] Conuter Hit

  1. #1
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478

    [php] Conuter Hit

    Ho creato questo semplicissimo contotare di visite:
    Codice PHP:
    [FONT=courier new][SIZE=2]<?php
    $data 
    "./count.dat";

    if(!(
    $fp fopen($data"r")))
    die (
    "Impossibile aprire il file: $data");
        
    $counter = (int) fread($fp10);
    fclose($fp);

    $counter++;
        echo 
    "Hit: $counter";

    $fp fopen($data"w");
    fwrite($fp$counter);
    fclose($fp);?>[/SIZE][/FONT]
    e mi chiedevo se esiste un modo per impedire il refresh (continuato!) della pagina e di conseguenza anche l'incremento ad libitum del contatore.

    Qualche suggerimento?

  2. #2
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    Potresti settare una variabile di sessione non appena aggiornato il contatore.
    Al successivo accesso alla pagina controlli se la variabile è settata, così puoi evitare di incrementare le visite ad ogni refresh.

  3. #3
    Codice PHP:


    <?php
    session_start
    ();

    $data "./count.dat";



    if(!(
    $fp fopen($data"r")))

    die (
    "Impossibile aprire il file: $data");

        
    $counter = (int) fread($fp10);

    fclose($fp);


    if(
    $_SESSION['counter_check']){

    $counter++;

    $_SESSION['counter_check'] = FALSE;
    }

        echo 
    "Hit: $counter";



    $fp fopen($data"w");

    fwrite($fp$counter);

    fclose($fp);?>

  4. #4
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    Usa un file/db per memorizzare gli ip unici dei visitatori...funziona anche con i cookie disabilitati.

    Questo squallido script l'ho postato un pò di tempo fa
    Non richiede db e nemmeno un file preesistente.
    Riporta hit totali, utenti online, passaggi googlebot.

    codice:
    // array di visitatori e timestamp in cui sono arrivati
    $visitor_ip  = array();
    $visitor_tm  = array();
     
    $total       = 0;   // totale da inizio dei tempi
    $total_gbot  = 0;   // totale gbot da inizio dei tempi
    $meastime    = time();  // default per inizio dei tempi
    $filename    = "visitors.txt"; // il file di log
    
    // inizio lettura file
    if(file_exists($filename))  // esiste?
    {
       $hfile = fopen($filename, "r");
       if($hfile){
        $meastime   = trim(fgets($hfile, 20)); 
        $total      = trim(fgets($hfile, 20));
        $total_gbot = trim(fgets($hfile, 20));
    
        while(!feof($hfile)){
          $ip = trim(fgets($hfile, 20));
          $tm = trim(fgets($hfile, 20));
          // vedi? acquisisco solo i visitatori
          // presenti da meno di 600 secondi (10 min)             
          if(time()-$tm<=600){
            $visitor_ip[]= $ip;  // push
            $visitor_tm[]= $tm;  // push
          }
        }
    
        fclose($hfile);
      }
     } // fine lettura file
    
    
     if(isset($_SERVER["REMOTE_ADDR"])) // sempre vero?
     {
        $current_ip = $_SERVER["REMOTE_ADDR"];
        $current_tm = time();
        // dopo aver letto l'ip del visitatore controllo
        // se è OK e se non è presente nella lista 
       if($current_ip!="" && !count($visitor_ip) || !in_array($current_ip, $visitor_ip)){
        // non è presente! aggiungo!
        ++$total;
        $visitor_ip[]=$current_ip; 
        $visitor_tm[]=$current_tm;
        // ciliegina sulla torta...
        if(isset($_SERVER["HTTP_USER_AGENT"])){
          if(stristr($_SERVER["HTTP_USER_AGENT"], "googlebot"))      {
              ++$total_gbot;
             }
        }
     }
    }
     
     // riscrivo il file con i dati
     // alcuni visitatori potrebbero essere scomparsi
     // perchè assenti da più di 10 minuti
    
     $hfile = fopen($filename, "w");
     if($hfile){
        fwrite($hfile, $meastime."\n");
        fwrite($hfile, $total."\n");
        fwrite($hfile, $total_gbot."\n");
        // gli utenti online sono quelli...rimasti
        $online = count($visitor_ip);
        for($i=0; $i<count($visitor_ip); $i++){
          fwrite($hfile,  $visitor_ip[$i]."\n");
          fwrite($hfile,  $visitor_tm[$i]."\n");
        }
        fclose($hfile);
    }
    
    // a questo punto hai le variabili
    // $meastime   : data di inizio registrazione
    // $total      : numero di visitatori totale (da $meastime)
    // $total_gbot : numero di visitatori che erano googlebot
    // $online     : numero di visitatori online  
    // la data la puoi formattare in numeri umani così
    $ddata = strftime("%d/%m/%Y" , $meastime);

  5. #5
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    Grazie ragazzi, a tutti... in particolare a VaLvOnAuTa per avermi dato la giusta isprazione!

    Ho risolto in questo modo:
    Codice PHP:
    [FONT=courier new][SIZE=2]<?php
    session_start
    ();

    $data "./count.dat";

    if(!(
    $fp fopen($data"r")))
    die (
    "Impossibile aprire il file: $data");
        
    $counter = (int) fread($fp10);
    fclose($fp);

    if(isset(
    $_SESSION['checkCounter'])) {
        
    $_SESSION['checkCounter'] = 1;
    } else {
        
    $_SESSION['checkCounter'] = $counter++;
    }
    echo 
    "Hit: $counter";

    $fp fopen($data"w");
    fwrite($fp$counter);
    fclose($fp);
    ?>[/SIZE][/FONT]
    Questo è più o meno quello che desideravo ottenere: evitare l'incermento continuo del contatore al refresh della pagina!

  6. #6
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    OKKIO che se il browser ha disabilitato i cookie neppure le $_SESSION fungono !

  7. #7
    Utente di HTML.it L'avatar di VaLvOnAuTa
    Registrato dal
    Jun 2002
    Messaggi
    2,003
    [supersaibal]Originariamente inviato da JHammer
    OKKIO che se il browser ha disabilitato i cookie neppure le $_SESSION fungono ! [/supersaibal]
    Forse mi sbaglio.. ma non c'è un'opzione che permette di memorizzare i file di sessione sul server e non sul client?

  8. #8
    [supersaibal]Originariamente inviato da JHammer
    OKKIO che se il browser ha disabilitato i cookie neppure le $_SESSION fungono ! [/supersaibal]
    mhhhh!!

    ma dove lo hai letto questo!!???

    se non vado errato le sessioni vengono salvate sul server e non sul client!!
    www.skorpiograph.com - [ PORTFOLIO ]
    ...se vuoi essere aiutato devi aiutare chi ti aiuta ad aiutarti!!!

  9. #9
    Utente di HTML.it L'avatar di JHammer
    Registrato dal
    Sep 2004
    Messaggi
    754
    [supersaibal]Originariamente inviato da CeMax-2000
    mhhhh!!

    ma dove lo hai letto questo!!???

    se non vado errato le sessioni vengono salvate sul server e non sul client!! [/supersaibal]
    qui

  10. #10
    Utente di HTML.it L'avatar di neida
    Registrato dal
    Feb 2005
    Messaggi
    1,478
    ...però è strano, pur avendo disabilitato i cookie dal browser lo script ha continuato a funzionare bene. Perchè?

    Ha smesso di funzionare solo dopo che ho modificato session.use_cookies (specifica se il modulo userà i cookies per archiviare l'id di sessione sul lato client. Di default è 1 (attivo)), impostandolo a 0 nel file php.ini.

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.