Raffaele Ilardo


Come registro le visite al mio sito


© La parziale riproduzione dei contenuti di questa pagina è consentita a patto di citare l'indirizzo del sito e l'autore.

Semplice codice javascript e php per sapere chi visita le nostre pagine web

gruppo di persone
Tanto per tenere fede al nome di questo sito, e cioè "elettronica e altro..." parlerò in questa pagina di un semplice metodo che ho usato io stesso per registrare le visite al mio sito.
Per carità, non voglio assolutamente atteggiarmi ad esperto di programmazione; diciamo che ho fatto un pò di ricerche ed ho imparato quanto basta ad ottenere il risultato che mi interessava.

Il mio scopo era semplicemente quello di sapere chi e quando visitava il mio sito. Visto che il server che mi ospita prevede l'uso del linguaggio php, ho pensato perchè non approfittarne? Leggendo qui e là ho trovato una descrizione delle cosiddette "query string" ed ho capito che servono a passare dei parametri, o comunque delle informazioni, ad altre pagine, siano esse scritte in php, o in altri linguaggi.

Creiamo una pagina php

Prima di tutto, dobbiamo creare una pagina in php da mettere sul nostro server; la chiameremo "registra.php". Cosa fa questa pagina? Grazie al linguaggio php, la pagina rileva l'indirizzo IP del visitatore, la data e l'orario e scrive il tutto in un apposito file di testo, sempre presente sul nostro server, e che potremo chiamare per esempio "visite.txt"
Ecco, di seguito, il codice della pagina php:

<?php
$ip = $_SERVER['REMOTE_ADDR'];
ini_set( 'date.timezone', 'Europe/Rome' );
$fp = fopen("visite.txt","a-");
fwrite($fp, $ip );
fwrite($fp, " ");
fwrite($fp, $_GET['pagename']);
fwrite($fp, " ");
fwrite($fp, date('d M Y'));
fwrite($fp, " ");
fwrite($fp, date("H:i:s"));
fwrite($fp, "\r\n");
fclose($fp);
?>

Provo a dare qualche breve spiegazione circa il codice di cui sopra:

riga 1: si usa la variabile $_SERVER che appartiene al gruppo delle variabili "superglobals"; uno degli elementi di tale variabile è $_SERVER['REMOTE_ADDR'], che consente di conoscere l'indirizzo IP di chi sta visitando la pagina; il valore così rilevato viene attribuito alla variabile $ip

riga 2: con ini_set('date.timezone', 'Europe/Rome') si imposta la zona cui fare riferimento per la data e l'orario

riga 3: si apre il file "visite.txt" e se ne attribuisce il nome alla variabile $fp; "a -" indica che il file viene aperto in modalità aggiunta dati (i nuovi dati vengono aggiunti in coda a quelli già presenti)

nelle righe 4 e 5, con fwrite($fp, $ip) viene scritto nel file l'indirizzo ip che avevamo determinato alla riga 1 e con fwrite($fp, " ") si inserisce uno spazio di separazione dai dati successivi

saltiamo per il momento le righe 6 e 7, mentre vediamo che nella riga 8 vengono scritti nel file il giorno (d) il mese (M) e l'anno (Y), così come nella riga 10 viene scritto l'orario (ore, minuti, secondi)

righe 11 e 12: si scrivono nel file i comandi \r e\n che equivalgono ad un ritorno a capo (lo scopo è quello di andare ad un nuovo rigo per scrivere i dati del visitatore successivo); con fclose($fp) il file viene chiuso.

Tengo a precisare che sicuramente non era necessario usare tante righe col comando fwrite, poichè i dati da scrivere potevano essere concatenati in modo opportuno; tuttavia, un pò per maggior chiarezza, un pò per pigrizia, ho preferito non modificare il codice.

Come funziona una "Query string"

Rimane adesso da chiarire come sia possibile sapere quale pagina del nostro sito è stata visitata; è qui che interviene la query string.

La query string, come dice il suo nome, è una stringa, e poichè "query" vuol dire "interrogazione", si tratta proprio di una stringa che viene aggiunta dopo un punto interrogativo.
Di seguito descrivo il modo in cui utilizzeremo il metodo della query string; si tratta di inserire in ogni pagina del nostro sito una riga di script tipo questo:

<script src="registra.php"></script>

Così com'è, questo script si limita a chiamare la pagina che noi abbiamo preparato sul server, ovvero la pagina "registra.php". Come possiamo sapere qual'è la pagina del nostro sito che ha chiamato la pagina php sul server? Dopo qualche ricerca, ho imparato che è piuttosto semplice: basta aggiungere allo script appena visto il nome della pagina (che supponiamo sia "introduzione")

<script src="registra.php?pagename=introduzione"></script>

Quando questa chiamata arriva alla pagina php, i dati che noi abbiamo passato, e cioè pagename=introduzione, saranno disponibili in un'apposita stringa lato server. Ogni dato sarà individuabile grazie al nome cui è associato: nel nostro caso, il valore "introduzione" sarà associato all'indice "pagename". Ecco che, con $_GET['pagename'], noi potremo recuperare tale valore e scriverlo sul file visite.txt. E' quello che succede alla riga 6 del nostro codice php.

Per migliore chiarezza farò un esempio completo.
Supponiamo che il sito sia composto da tre pagine:
- libri.htm
- filmati.htm
- recensioni.htm.
Dovremo allora inserire in ciascuna pagina il nostro script, adattato come segue:
nella pagina libri.htm inseriremo:
<script src="registra.php?pagename=libri"></script>

nella pagina filmati.htm inseriremo:
<script src="registra.php?pagename=filmati"></script>

nella pagina recensioni.htm inseriremo:
<script src="registra.php?pagename=recensioni"></script>

Naturalmente potete inserire come nome della pagina quello che volete, non è obbligatorio che corrisponda al nome effettivo della pagina htm del vostro sito.

Ogni volta che una di queste pagine sarà visitata, ci ritroveremo nel file visite.txt una riga di dati contenente l'indirizzo ip, il nome della pagina, la data e l'orario della visita.
Per leggerlo, sarà sufficiente richiamare il file, o dal web, o scaricandolo tramite FTP.
Ogni tanto, quando ci pare che il file stia diventando troppo lungo, possiamo fare un upload del file visite.txt vuoto, in modo da riazzerare il contenuto.

Se vi divertite a provarlo, mi piacerebbe sapere cosa ne pensate.




raffaele ilardo