contatore PHP

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Ciao a tutti, questo contatore mi permette di contare visite giornaliere e totali. Il problema è che ad ogni refresh di pagina incrementa il conteggio. Come posso fare affinche ciò non avvenga? Grazie dell'aiuto

PHP:
<?php

// Modifica a tuo piacimento il colore della tabella e il suo bordo
$colore_tabella='#66FFCC';
$bordo_tabella='#000000';

// Non modificare il codice qui sotto

$file="count.txt";
$data_oggi=date("d/m/Y");


// Prima volta in assoluto che si accede alla pagina
if (!(file_exists($file)))
{
$crea_file=fopen($file,"w");
$inizio="1"."\n".$data_oggi."\n"."1";
fputs($crea_file,$inizio);
fclose($crea_file);
}

else{
// Estrazione dati
$dati=file($file);
$visite_tot=$dati[0];
$data=chop($dati[1]);
$visite_oggi=$dati[2];

$visite_tot=$visite_tot+1;

// Controllo delle visite odierne
if ($data_oggi==$data)
{ $visite_oggi=$visite_oggi+1; }
else
{ $visite_oggi=1; }
 
// Scrittura dati su file
$scrivi_file=fopen($file,"w+");
$dati=$visite_tot."\n".$data_oggi."\n".$visite_oggi;
fputs($scrivi_file,$dati);
fclose($scrivi_file);

// Visualizzazione dati
$tabella = "<table width='150' cellpadding='2' cellspacing='0' bordercolor='$bordo_tabella' bgcolor='$colore_tabella' style='border:1px solid;'>";
$tabella .="<tr bgcolor='#BEDFE7'><td><a href='http://www.clickmania.altervista.org'><img src='statcounter.gif' border='0'></a></td></tr>";
$tabella .="<tr><td><div class='scrittura'>VISITE TOTALI: $visite_tot<br>";
$tabella .="VISITE OGGI: $visite_oggi</div></td></tr></table>";

echo $tabella;
}
?>
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Una soluzione potrebbe essere quella di creare un cookie al momento del conteggio, se il cookie è presente il contatore non viene aggiornato; ad esempio, dopo la fase di scrittura del contatore puoi inserire:
PHP:
setcookie("CtrlCookie",$_SERVER['REMOTE_ADDR'], time()+3600*24);

quindi consenti la scrittura solo se il cookie non è settato:
PHP:
if (!isset($_COOKIE["CtrlCookie"])){
// Scrittura dati su file
$scrivi_file=fopen($file,"w+");
$dati=$visite_tot."\n".$data_oggi."\n".$visite_oggi;
fputs($scrivi_file,$dati);
fclose($scrivi_file);
setcookie("CtrlCookie",$_SERVER['REMOTE_ADDR'], time()+3600*24); 
}
Nel caso dell'esempio il cookie avrà una durata di 24 ore (3600 secondi*24)
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
ti ringrazio molto. Ho applicato il tuo suggerimento e funziona alla grande
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Ricordati che funziona soltanto con i browser che accettano i cookies (che comunque sono la maggior parte).
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
piccolo dubbio, secondo me impedisce il conteggio per refresh, ma anche quello di abbandono pagina e poi ritorno che secondo me andrebbe conteggiato.
dato che il refresh è un'azione lato client non c'è un codice js (con jq e ajax) che capisca che è un refresh e non un accesso da altra parte
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
ok è chiaro. Sto facendo caso che il contatore funziona all'interno della document root di easyphp. Però se lo importo all'interno della cartella del mio tema wordpress non funziona più.. Com'è possibile?
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
ciao
piccolo dubbio, secondo me impedisce il conteggio per refresh, ma anche quello di abbandono pagina e poi ritorno che secondo me andrebbe conteggiato.
dato che il refresh è un'azione lato client non c'è un codice js (con jq e ajax) che capisca che è un refresh e non un accesso da altra parte

qualcosa tipo:
PHP:
Event.observe(window, 'unload', function() { alert('Addio!!'); });
Dovrebbe funzionare anche al cambio pagina.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
niente di che. Ho semplicemente trascinato il count.php all'interno della cartella del mio tema e poi nella index ho incluso il file
 

Eliox

Utente Attivo
25 Feb 2005
4.390
3
0
Devi modificare il file functions.php della tua installazione di WP, vai su "Aspetto > Editor" e seleziona "functions.php", poi trasformi il tuo codice in una funzione, ad esempio:
PHP:
<?php
add_action('wp_footer', 'conta');

function conta() { ?>
// codice funzione
<?php } ?>

In questo modo il contatore sarà sempre incluso nel footer e funzionerà per ogni pagina.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
A me serve solo nella home page e Cmq così facendo non penso di risolvere il problema del refresh..
 
Discussioni simili
Autore Titolo Forum Risposte Data
L [PHP] contatore con sqlite PHP 9
T [PHP] [Javascript] Download e contatore PHP 3
bubino8 [PHP] Contatore Scan QR con redirect PHP 10
M [PHP] Contatore Tempo Server-side PHP 8
M [PHP] contatore record PHP 7
Alessandro Le Mura Contatore visite per ogni pagina con MYSQL - PHP PHP 40
Alessandro Le Mura Contatore php - txt PHP 8
foki {PHP Script} Contatore Utenti Registrati PHP 17
T contatore totale click e media in secondi PHP 7
T Contatore alla rovescia su più elementi simultaneamente Javascript 4
F Creare un contatore numerico in HTML HTML e CSS 9
J contatore visualizzazioni video HTML e CSS 1
Monital Contatore sul sito Google Analytics 2
R Contatore alla rovescia per adesioni Supporto Mr.Webmaster 0
Marco_88 Limitare un contatore PHP 1
W Contatore posti in un form, come implementarlo? WordPress 0
Marco_88 Contatore di accessi PHP 5
I contatore caratteri textarea sbagliato Javascript 1
D Record disconesso contatore dove sbaglio? Classic ASP 0
V [risolto] Contatore caratteri stile SMS da una textarea Javascript 6
Alessandro Le Mura Contatore di click su link con redirect ogni 24 ore PHP 4
Alessandro Le Mura [RISOLTO]Contatore di click su link con redirect PHP 5
8 Script per il contatore download PHP 11
L Inserire campo input dinamico con contatore in jquery jQuery 8
A contatore visite PHP 6
Shyson richiamare contatore PHP 5
GoshMaledetto Contatore numero letture PHP 4
C Iframe e contatore visite HTML e CSS 4
Shyson Contatore post non si aggiorna in automatico PHP 7
S Contatore click su link PHP 1
C contatore alfanumerico 0000 -> ZZZZ, idee? PHP 3
max_400 Contatore Top Forum PHP 17
B contatore di download PHP 1
max_400 Contatore scaricamento file... semplice semplice by max_400 PHP 8
davide1982 Incremento contatore click PHP 14
C Contatore visite su Facebook (era: quesito) PHP 2
davide1982 Problema di redirect dal contatore di click Database 1
T Memberarea, forum, contatore...Mi chiarite le idee? HTML e CSS 7
A Contatore per code di clienti in attesa Flash 0
G contatore commenti PHP 6
R Creare un contatore visite senza mysql PHP 6
I contatore crediti a 8574 Supporto Mr.Webmaster 3
danlupo Problemi visualizzazione Contatore PHP 2
danlupo Problema Contatore Accessi PHP 3
whirl Contatore condiviso tra 2 siti PHP 3
Z Contatore fotogallery: problemi a caricare onload laprima PHP 1
A Problema Contatore PHP 6
M Incrementare contatore da flash Flash 12
SolidSnake4 contatore visite PHP 4
SolidSnake4 contatore visite PHP 2

Discussioni simili