|
|||||||
![]() |
|
|
LinkBack | Strumenti discussione | Modalità visualizzazione |
|
|||
|
Salve
ho inseriro un contatore di ingressi, scritto in php, sulla prima pagina del sito. Questo contatore per? non si incrementa se un utente, tramite motore di ricerca, accede direttamente ad una pagina interna. Ho pensato di insreire del codice nascosto anche sulle altre pagine, ma cos? se un visitatore comincia a navigare per le pagine, il contatore viene erroneamente incrementato. Sto pensando a delle soluzioni possibili per capire se un utente ? entrato per la prima volta nel sito e solo in questo caso incrementare il contatore. potrei 1) tener traccia dell'indirizzo IP con delle variabili di sessione 2) utilizzare l'id di sessione A questo punto ho la senzazione che la cosa si faccia complessa :? . Dovrei salvare queste informazioni ad esempio in una tabella mysql, trovando un modo efficace per cancellare i dati degli utenti che non stanno pi? navigando sul sito! Volevo sapere se qualcuno ha gi? affrontato questo problema e aveva qualche consiglio da darmi. Grazie a tutti Silvio |
|
|||
|
Ciao,
non so se la cosa pu? esserti utile, ma io ho risolto con un semplice script in php di una trentina di righe (compresi i commenti) che crea due file di dati: - uno con il numero di visite "certificate" - l'altro con l'ultimo IP che ha visitato la pagina. Dallo script leggo l'IP del visitatore, lo confronto con l'ultimo memorizzato e, se diverso, lo sostituisco nel file ed incremento il numero visite, altrimenti semplicemente lo ignoro. Non ? efficacissimo, ma per un basso numero di visite funziona bene. Naturalmente l'ho inserito in ogni pagina. Eventualmente puoi considerare di tenere registrati gli ultimi 5 o 10 IP e magari aggiungere la data/ora della visita, per evitare che tre o quattro visitatori che girino contemporaneamente tra le pagine ti facciano schizzare il numero di visite alle stelle :lol: Se hai bisogno di ulteriori info fammi sapere. -K8 |
|
|||
|
Si l'idea mi pu? interessare
.Magari potesti inserire il codice in una risposta cos? se qualche altra persona ha lo stesso problema pu? trarre giovamento da questo forum. Prover? poi a fare le modifiche che mi suggerisci e se tutto funziona inserir? il codice nel forum Grazie Silvio |
|
|||
|
Sostanzialmente il codice ? questo:
Codice:
//directory dove sono conservati i dati
define("dirdati", "./dat/");
//nome completo della pagina chiamante
$pagina = $PHP_SELF;
//toglie dal nome l'estensione
$nomefile = dirdati.substr($pagina, 1, strpos($pagina, ".")-1);
//legge il contatore della pagina
$file = fopen ($nomefile.".dat", "a+");
$num = fread ($file, filesize($nomefile.".dat"));
fclose ($file);
//legge l'ultimo numero IP che ha visitato la pagina
$file = fopen ($nomefile.".ipn", "a+");
$ip_vecchio = fread ($file, filesize($nomefile.".ipn"));
$IP = $_SERVER['REMOTE_ADDR'];
fclose ($file);
// se l'ultimo numero IP e' diverso incrementa...
if (!($ip_vecchio == $IP))
{
// cancella il vecchio file visite e lo ricrea
unlink ($nomefile.".dat");
$file = fopen ($nomefile.".dat", "a+");
// incrementa il contatore visite e lo scrive
$num++;
fwrite ($file, $num);
fclose ($file);
// sostituisce l'ultimo IP con quello attuale
unlink ($nomefile.".ipn");
$file = fopen ($nomefile.".ipn", "a+");
fwrite ($file, $IP);
fclose ($file);
}
//in ogni caso stampa il numero di visite totali
echo $num;
Codice:
<?php include 'include/counter.php'; ?> - lo script php lo chiami 'counter.php' - lo metti una subdir che si chiami 'include' - esista un'altra subdir che si chiama 'dat' dove metti i files dati ovviamente... :lol: Ti verranno create tanti files (nella dir 'dat') quante sono le pagine dove inserisci il codice, in modo che possa gestirti queste statistiche come meglio credi. Il codice ? molto semplice, come vedi, e dovrebbe essere autoesplicativo, tuttavia fammi sapere se hai necessit? di qualche chiarimento. Occhio: a seconda del numero di visitatori le misure dei files potrebbero diventare... preoccupanti. Buon divertimento :wink: -K8 |
|
|||
|
Facendo un po di ricerce sulla rete questa ? la soluzione che ho adottato e che consente anche di sapere quanti utenti sono collegati.
La soluzione utilizza due tabelle in Mysql Tabella utenti online Serve per tenere traccia degli utenti che stanno visitando il sito e da quanto tempo. Per fare questo, ogni volta che viene aperta una pagina si registra l'IP dell'utente, se questo non ? gi? presente nel database. Codice:
CREATE TABLE `online` ( `session_id` varchar(32) NOT NULL default '', `time` int(11) NOT NULL default '0', PRIMARY KEY (`session_id`) ) Ad ogni nuova registrazione viene incrementato il contatore registrato in tabella. Codice:
CREATE TABLE `counter` ( `counter` int(11) NOT NULL default '0' ) Ho inserito il codice che esegue i controlli sull'utente in un file connessione.php dove viene effettuata anche la connessione al database. il file verr? incluso in tutte le pagine utilizzando Codice:
<?php require_once('connessione.php'); ?>
Citazione:
Codice:
<?php mysql_select_db($database_mio_sito, $mio_sito); $query_counter = "SELECT counter FROM counter"; $counter = mysql_query($query_counter, $mio_sito) or die(mysql_error()); $row_counter = mysql_fetch_assoc($counter); mysql_select_db($database_mio_sito, $mio_sito); $query_online = "SELECT count(*) online FROM online"; $online = mysql_query($query_online, $mio_sito) or die(mysql_error()); $row_online = mysql_fetch_assoc($online); ?> Codice:
<?php $row_counter['counter']); ?> Codice:
<?php echo $row_online['online']; ?> Per utilizzare un contatore grafico ho inserito le immagini delle cifre in una directory "digit" con nome 1.gif, 2.gif,.. . La funzione contatore trasforma il risultato in una sequenza di cifre. Il primo parametro della funzione ? il valore del contatore, mentre il secondo ? la directory con le cifre. Codice:
<?php contatore($row_counter['counter'],"digit/"); ?> Codice:
<?php
function contatore($counta,$dirimg) {
$imagetype = ".gif";
$numofdigits = 5; //numero minimo di cifre da visualizzare
error_reporting(0);
$digits = array();
$digitlen = strlen($counta);
// vengono inseriti gli "0" iniziali in base a $numofdigits
$zerostofill = $numofdigits - $digitlen;
if ($zerostofill > 0) {
$countc = 1;
while ($countc <= $zerostofill) {
$countd .= 0;
$countc++;
}
$countc = $countd.$counta;
} else $countc = $counta;
$countb = 0;
//stampa delle cifre
while ($countb < strlen($countc)){
$digits[$countb] = substr($countc,$countb,'1');
$countb++;
}
$countb = 0;
while ($countb < strlen($countc)) {
echo '[img]'.$dirimg.$digits[$countb].$imagetype.'[/img]';
$countb++;
}
}
?>
Buon divertimento !! :lol: Silvio |
![]() |
| Strumenti discussione | |
| Modalità visualizzazione | |
|
|
Discussioni simili
|
||||
| Discussione | Autore discussione | Forum | Risposte | Ultimo messaggio |
| contatore | awd | Pannello di controllo Cpanel - Linux | 2 | 27-05-2005 17.22.24 |
| aprire un'altra finestra quando un utente accede al sito | ancona5 | PHP | 1 | 07-04-2005 16.16.14 |
| Contatore visite | guru | Pannello di controllo Cpanel - Linux | 1 | 28-11-2003 15.00.49 |
| Contatore delle visite | cesaripa | HTML | 2 | 10-04-2003 13.18.12 |
| CONTATORE,FORUM,SONDAGGI | agnese | Pannello di controllo Cpanel - Linux | 10 | 08-12-2002 10.42.49 |