Problema Contatore

antolot

Nuovo Utente
22 Nov 2007
23
0
0
Salve a tutti

ho un piccolo problema con un contatore, in pratica si incrementa ogni volta che effettuo il refresh della pagina, è possibile eliminare questa cosa?

Di seguito il codice:



if (!$hitsfile) $hitsfile = dirname(__FILE__)."/hits";
if (!$images) $images = dirname(__FILE__)."/images";
$images = str_replace($DOCUMENT_ROOT, "", $images);

$hits = file($hitsfile);
$hits = $hits[0] + 1;


# Opening the hits file and writing the number of hits:
$fp = fopen($hitsfile, "w");
fwrite($fp, $hits);

if ($invisible != "yes") {
# Text counter
if ($counterstyle == "text") {
echo $hits;
}

# Image counter
else {
$digit = strval($hits);
for ($i = 0; $i < strlen($hits); $i++) {
echo "<img src=$images/$digit[$i].gif height=$height width=$width alt=$hits>";
}
}
}
?>




Grazie e buon lavoro a tutti
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Io vedrei due possibili soluzioni al tuo problema. La prima consiste nel salvare i qualche modo l'indirizzo IP del client ed incrementare il contatore solamente nel caso in cui l'IP non sia presente nella lista (nuovo utente) e riabilitare un particolare IP solamente dopo il trascorrere di un determinato periodo di tempo. Questa soluzione però ha degli inconvenienti in quanto escluderebbe dal conteggio un'intera categoria di client (quelli che accedono ad internet tramite dei proxy e quindi con uno stesso indirizzo IP) come ad esempio gli utenti Fastweb ed molti dipendenti aziendali.
L'altra soluzione è quella di utilizzare i cookie (però il browser client deve avere tale opzione abilitata). In questo modo basta incrementare il contatore e creare un cookie temporizzato al primo accesso da parte di un client ed incrementare il contatore le volte successive solamente se il cookie non è presente.
 

antolot

Nuovo Utente
22 Nov 2007
23
0
0
Grazie ma....

Ti ringrazio per la risposta, visto che non sono molto pratico, potresti indicarmi in che modo svolgere la tua seconda soluzione?

Ancora mille grazie
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Ti posto questo codice minimale che potrebbe essere migliorato ad esempio con dei controlli aggiuntivi sulla possibilità o meno del browser del client di accettare i cookie ecc.

L'idea è quella di controllare se sulla macchina client sia impostato o meno un determinato cookie. Se esso non è impostato allora significa che si tratta di un nuovo utente che accede al sito per cui il contatore va incrementato e viene creato un cookie temporizzato (il valore di scadenza del cookie potrai deciderlo tu). La temporizzazione fa sì che in quell'arco di tempo il client venga riconosciuto e venga impedito l'incremento del contatore, questo per permettere na navigazione all'interno del sito da parte dell'utente stesso senza alcun incremento del contatore. Quando il cookie sarà scaduto (puoi impostare una temporizzazione adeguata alle tue esigenze, in termini di minuti o ore ecc.), il client verrà interpretato come un nuovo utente ed il contatore verrà nuovamente incrementato.

PHP:
<?php
        // Legge il cookie di nome CounterCookie
	@ $cookieValue = $_COOKIE['CounterCookie'];
	if (!isSet($cookieValue)) {
                // Il cookie non è impostato allora imposta il cookie e poi incrementa il contatore
		setcookie("CounterCookie", "true", time() + 10);
                // il valore del cookie "true" ed il tempo di scadenza 10 secondi vanno modificati in base alle proprie esigenze.

                ....

	}
?>
 

antolot

Nuovo Utente
22 Nov 2007
23
0
0
Chiedo scusa per la mia ignoranza, se lo inserisco così non mi visualizza più il contatore



$hits = file($hitsfile);

$cookieValue = $_COOKIE['CounterCookie'];

if (!isSet($cookieValue))
{
$hits = $hits[0] + 1;
setcookie("CounterCookie", "true", time() + 3600);

}



dov'è che sbaglio??

grazie grazie
 

satifal

Utente Attivo
25 Set 2008
522
13
0
Roma
Ciao, in base al codice del counter da te postato, potresti provare a fare una cosa del genere:

PHP:
<?php

    if (!$hitsfile) $hitsfile = dirname(__FILE__)."/hits";
    if (!$images) $images = dirname(__FILE__)."/images";
	
    $images = str_replace($DOCUMENT_ROOT, "", $images);

    $hits = file($hitsfile);

    $cookieValue = $_COOKIE['CounterCookie'];
    if (!isSet($cookieValue)) {
        $hits = $hits[0] + 1;
        setcookie("CounterCookie", "true", time() + 3600);
    }

    # Opening the hits file and writing the number of hits:
    $fp = fopen($hitsfile, "w");
    fwrite($fp, $hits);

    if ($invisible != "yes") {
        # Text counter
        if ($counterstyle == "text") {
            echo $hits;
        }

        # Image counter
        else {
            $digit = strval($hits);
            for ($i = 0; $i < strlen($hits); $i++) {
                echo "<img src=$images/$digit[$i].gif height=$height width=$width alt=$hits>";
            }
        }
    }

?>
 
Ultima modifica:

Greyfox

Nuovo Utente
27 Gen 2009
13
0
0
ciao, puoi usare anche il referer cosi da evitare che segni una visita per ogni pagina visitata.
 
Discussioni simili
Autore Titolo Forum Risposte Data
davide1982 Problema di redirect dal contatore di click Database 1
danlupo Problema Contatore Accessi PHP 3
metalgemini problema con contatore Classic ASP 1
F problema con il contatore HTML e CSS 2
C problema seo + cerco esperto SEO e Posizionamento 1
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0

Discussioni simili