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
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 0
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
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
R problema con else PHP 0
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

Discussioni simili