Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940

    [PHP] Contatore visite basato su file

    Essì, ho sempre schernito chi lo faceva, ed adesso sono costretto ad usare anch'io un contatore di visite basato su file anzichè su db.

    L'argomento è ben più difficile di quanto un neofita possa pensare: la gestione corretta della concorrenza con una simile tecnologia è difatti IMPOSSIBILE. Posto questo, come vi pare il seguente codice?

    Codice PHP:
    <?php

    // Semplice funzione di conteggio basata su file (quindi senza gestione corretta della concorrenza).
    // [Gli @ sono aggiunti per evitare la visualizzazione degli errori in caso di permessi insufficienti per lo script: in caso di
    // "Permission denied", infatti, i soli controlli sull'"if open" non sopprimono la visualizzazione dell'errore a video].
    function _my_counter($counterfile)
      {
      
    $count 0;

      
    // Se il file esiste, lo apro in lettura e ne leggo il contenuto
      
    if (file_exists($counterfile))
        {
        
    // Se il file esiste ma non è possibile aprirlo in lettura (perchè lockato da un processo in scrittura e/o momentaneamente protetto o bloccato
        // da qualche processo in loop/crash), allora esco e non ritorno nulla: se non lo facessi ritornerei un valore fisso e sbagliato di 1 visita.
        // Infine, trasformo quanto letto in intero - type casting.
        
    if (!$fd = @fopen($counterfile,"r")) return false;
          
    $count = (int)@fread($fd,@filesize($counterfile));
        @
    fclose($fd);
        }

      
    // Aggiornamento numero visite (SOLO se il file non esisteva, il conteggio parte da uno)
      
    if ($count<1$count=1;
      else 
    $count++;

      
    // Aggiornamento (scrittura) file
      
    if (!$fd = @fopen($counterfile,"w+")) return false;
        @
    fwrite($fd,$count);
      @
    fclose($fd);

      if (
    $count==1) return "Pagina visualizzata [b]".$count."[/b] volta.";
      else if (
    $count>1) return "Pagina visualizzata [b]".$count."[/b] volte.";
      else return 
    false// Per qualsiasi altro imprecisato motivo
      
    }
      
    // **************** main

    $counterfile "counter_file.log";
    echo 
    _my_counter($counterfile);
    ?>
    10x a lot

    [.:: JaguarXF ::.]
    __________________

  2. #2
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    Troppa ressa...devo distribuire i bigliettini numerati, qui non so più chi mi ha risposto prima e chi dopo...


    [.:: JaguarXF ::.]
    __________________

  3. #3
    Utente di HTML.it L'avatar di mark2x
    Registrato dal
    Nov 2005
    Messaggi
    1,940
    ultim'up.

    [.:: JaguarXF ::.]
    __________________

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.