Pagina 1 di 1

Shinistat e index.php

Inviato: mer 9 nov 2005, 21:00
da GuRpS
Salve a tutti ho (tanto epr cambiare un problema)...

Se metto il "coso" di shinistat nella index.php, per come e' messa ora (ovvero apro tutto nella parte centrale) ogni volta che viene aperta una pagina il contatore fa un click...quindi se guardo 3 pagine fa 3 click anche se io il sito l'ho visitato solo ua volta...

Qcuno ha per caso idea di come si possa fare a porre rimedio a questo "bug"?

Inviato: mer 9 nov 2005, 23:37
da IceSlack
dove lo hai messo? noncpaisco mi faresti uno schema?

Inviato: mer 9 nov 2005, 23:49
da touchstyle
Io ho messo il codice nel footer che vado a includere in ogni pagina,ed ho notato anch'io lo stesso problema, nel senso che se richiamo due volte la stessa pagina, viene incrementato il contatore.
Ho intenzione di scrivere un contatore "serio" che non usi mysql ma solo file di testo, tanto ci vuol veramente poco. Se vuoi poi te lo posto.

Ciao,
Touch.

Inviato: gio 10 nov 2005, 0:46
da GuRpS
Grazie sarebbe una gran bella cosa...

@IceSlack:
il problema e' che se metto nella home.php il codice di shinistat oni volta che una qsiasi pagina viene caricata (visto che la struttura esterna rimane la stessa mentre i vari contenuti vengono caricati nella parte centrale) viene anche incrementato il contatore di shinistat...
Cosi' si "falsano" i risultati delle visite perche' se guardi 3 pagine del sito incrementi di 3 "click" mentre in realta' il "click" e' unico...

L'unica possibilita' sarebe includerlo nella "main.html" che sarebbe la pagina che viene caricata se nessuna variabile e' scelta e che quindi dvrebbe essere caricata una volta sola all'inizio (a meno che la gente non ci torni...)...boh...

Inviato: gio 10 nov 2005, 7:59
da aschenaz
Questo è quello che ho fatto io. E' cross-platform perché è di una specie di cms che sto elaborando:

Codice: Seleziona tutto

session_start();

$counterfile=getcwd().DIRECTORY_SEPARATOR."etc/cnt.txt";
if(!file_exists($counterfile)) {
touch($counterfile);
if(DIRECTORY_SEPARATOR=="/") chmod($counterfile,0777);
$cop=fopen($counterfile,"r+");
$acc=0;
fputs($cop,$acc);
fclose($cop);
}
if(!isset($_SESSION["counter"])) {
	$cfop=fopen($counterfile,"r+");
	$acc=fgets($cfop,10);
	$acc++;
	fseek($cfop,0);
	fputs($cfop,$acc);
	fclose($cfop);
	$_SESSION["counter"]=$acc;
}
E poi, nel posto preferito e con lo stile voluto:

Codice: Seleziona tutto

echo "Accessi n. ",$_SESSION["counter"];
Naturalmente fa riferimento ad una sub-directory etc...
NON incrementa il numero col semplice aggiornamento.
Volendo essere più pignoli, si può includere qualche riga di codice per evitare l'incremento quando a visitare è sempre lo stesso ip...
Ciao,
nino