Riprendiamo il discorso lasciato in sospeso nella lezione precendente,
ovvero come creare il componente piu' gettonato dai webmaster, il contatore.
I sistemi per realizzarli con le ASP sono molti. In questo primo ciclo di lezioni, rivolte
esclusivamente ai principianti, analizzaremo il più semplice dei contatori, che
per quanto "scarno" dal punto di vista grafico è estremamente funzionale oltre che leggero, perché
costituito da semplice testo.
Prima di tutto però dobbiamo introdurre due nuovi oggetti grazie ai quali è possibile operare in modo
molto efficace.
Il primo con cui fare conoscenza è un cookie molto particolare.
L'oggetto Session è un biscottino che nasce ogni volta che ci colleghiamo ad un sito basato su *ASP e grazie
ad un algoritmo estremamente complesso è unico per ogni collegamento. Il modus
operandi dell'oggetto session è semplicissimo. Con una semplice assegnazione (come con una normale variabile)
è possibile memorizzare dati e mantenerli per tutta la durata della navigazione. Questo torna utile tutte le
volte che si vogliono passare dei dati da una pagina all'altra senza ricorrere ai form.
Con il seguente codice <%session("nome")="pippo"%> si memorizza il valore pippo
nella chiave "nome" della variabile session. Il nome della chiave è arbitrario ed è possibile utilizzarne più di uno.
L'unica limitazione che comporta l'uso della session è che il browser deve accettare i cookie.
Il secondo oggetto che adopereremo in questa lezione è il Filesystem. Il suo impiego è quello di manipolare
i file sul server. In questo modo potremo scrivere in un file di testo il numero effettivo degli hit al nostro sito.
Per adoperare l'oggetto filesystem bisogna crearlo con la stringa seguente:
**set miofile=server.createobject("scripting.filesystemobject")
Una volta creata l'istanza (miofile) è possibile attingere a tutto l'insiemde di metodi e proprietà ad essa associata.
Per operare su di un file di testo presente nella root del nostro sito dovremo prima di tutto aprire il collegamento verso il file.
Poichè il metodo invocato richiede il percorso fisico del file (C:
omedir
omefile.txt) è necessario farsi "mappare"
dal server l'informazione con il metodo mappath della collezione server.
contatore=server.mappath("count.txt")
A questo punto possiamo aprire il file con il metodo opentextfile dell'oggetto miofile.
set leggi=testo.opentextfile(contatore,1,true)
Il primo parametro passato è il percorso fisico del file, il secondo è la modalita' di apertura
del file. 1 per apertura in scrittura, 2 in lettura e 8 in modalita append.
A questo punto tutti gli strumenti per leggere il numero di visite sono pronti per l'uso.
Con il metodo readline leggiamo il valore contenuto in count.txt e sommiamogli uno dopo averlo convertito
da scringa ad intero. Questa conversione si rende necessaria poiché VBscript supporta solo il tipo dati Variant.
Da un lato ciò è comodo perché rende automatiche le definizioni di tipo, dall'altro presenta lo svantaggio
di generare dei conflitti se si confrontano variabili di cui non si conosce il tipo.
conta=leggi.readline
conta=cint(conta)
conta=conta+1
A questo punto per evitare trucchi (come ricariche di pagine che possono falsare i dati di visita)
memorizziamo il valore di conta in una chiave dell'oggetto session.
session("conta")=conta
leggi.close
E, dopo aver chiuso la connessione con l'oggetto leggi creiamo un nuovo oggetto scrivi come istanza
dell'oggetto testo, ma stavolta in scrittura per memorizzare il valore di conta.
set scrivi=testo.opentextfile(contatore,2,true)
scrivi.write(conta)
scrivi.close
.
Una raccomandazione. Se il file non contiene dati si verifica un'errore che blocca il file finchè non si resetta il pc.
Quindi assicuratevi che tutto vada per il verso giusto prima di caricare le vostre pagine sul server.
Il codice completo per creare il contatore è il seguente.
if session("conta")=0 then
contatore=server.mappath("count.txt")
set testo=server.createobject("scripting.filesystemobject")
set leggi=testo.opentextfile(contatore,1,true)
conta=leggi.readline
leggi.close
conta=cint(conta)
conta=conta+1
session("conta")=conta
set scrivi=testo.opentextfile(contatore,2,true)
scrivi.write(conta)
scrivi.close
else
conta=session("conta")
end if
response.write(conta)
Il costrutto if then....else permette di impedire hit "fasulli", poiché impone la creazione di
una nuova session prima di scrivere nel file.
Il file count.txt deve essere presente nella cartella dove si trova la pagina asp che lo apre.