Durante la navigazione in Internet, a tutti è capitato almeno una volta di approdare in un sito web e di leggere un messaggio che ci ricordava l'ultima volta in cui abbiamo visitato il sito web in questione. Ora, grazie alla tecnologia vb.net offerta da Microsoft, studieremo come realizzare questo semplice script e inserirlo nella propria pagina. Si ricorda che lo stesso problema è
stato sviluppato e risolto utilizzando l'asp3.
Per comodità di studio, il codice necessario per svolger tale compito,
verrà suddiviso nelle sue due parti fondamentali. La prima consiste nel
codice che verrà eseguito ed elaborato sul server side (lato server) e
la seconda parte mostrerà a video i risultati ottenuti in precedenza.
Parte lato server:
<%@ Page language="VB" debug="true"%>
<%@ import namespace="system.datetime" %>
<script runat="server">
Sub page_load( obj As object, e As eventargs)
'Memorizzo la data di oggi
Dim dtOggi As date
dtOggi=system.datetime.now()
'Prelevo la precedente (se esiste) data di visita dal cookies
Dim dtLast As String
'nel caso non trova il cookies evito la generazione di errore
On Error Resume Next
dtLast=request.cookies("www.innovatel.it")("ultima_net")
'Variabile contenente il messaggio finale
Dim strFinale As string = ""
'Definisco tra quanti mesi scadrà il cookies
Dim intMesi As Integer = 2
'Effettuo il controllo se è la prima visita
If (dtLast<>"")then
strFinale="Ultima visita -->" & (dtLast)
else
strFinale="Prima Visita"
End if
'Scrivo nel cookies
response.cookies("www.innovatel.it")("ultima_net")=dtOggi
response.cookies("www.innovatel.it").expires = DateTime.Now.AddMonths(intMesi)
'Mostro il messaggio a video
ultima_visita.text= strFinale
End sub
</script>
Come si può facilmente intuire, la ricerca e la preparazione della stringa da visualizzare a video va realizzata nella seguente subroutine:
sub page_load( obj as object, e as eventargs)
' corpo della subroutine
end sub
Come è facilmente intuibile dal nome della stessa, tale subroutine viene attivata esattamente nel momento in cui la pagina viene caricata.
La data attuale viene letta e memorizzata in una variabile apposita:
Dim dtOggi As date
dtOggi=system.datetime.now()
In un modo analogo, la data della eventuale visita precedente viene letta da un cookies specifico e memorizzata in una variabile.
Dim dtLast As String
On Error Resume Next
dtLast=request.cookies("www.innovatel.it")("ultima_net")
Ora spiego il perchè della presenza dell'utilizzo di On Error Resume Next. Se viene tentata la lettura di un cookies inesistente, la pagina interessata genererà un errore. Questo accadrebbe ogni prima visita del nostro sito.
Grazie a questa soluzione, se il cookies non esiste, la pagina prosegue tranquillamente senza nessun problema.
Una volta prelevato o meno il valore dal cookies, lo si controlla per capire
se esiste davvero e preparare la stringa da mostrare a video all'uente finale.
Per far ciò si utilizza la seguente parte di codice:
If (dtLast<>"")then
strFinale="Ultima visita -->" & (dtLast)
else
strFinale="Prima Visita"
End if
Una volta fatto ciò, verrà preparato o aggionato il cookies contenete la data attuale e verrà fatto scadere tra intMesi. Quest'ultima è una variabile che indica tra quanti mesi far scadere il cookies appena creato. Per l'esempio in corso, ho impostato il valore a 2.
response.cookies("www.innovatel.it")("ultima_net")=dtOggi
response.cookies("www.innovatel.it").expires = DateTime.Now.AddMonths(intMesi)
Nella fase finale, viene solamente assegnato il contenuto all'etichetta (label) creata nella parte html che avrà il compito di contenere il valore presente in strFinale.
ultima_visita.text= strFinale
Prima di concludere l'articolo, mostro la parte html della pagina:
'Parte lato client
<html>
<head>
<title>Ultima Visita in vb.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<table width="100%" border="0" cellspacing="0"
cellpadding="0" height="100%">
<tr>
<td valign="middle" align="center">
<asp:Label id="ultima_visita" value="" runat="server"
/>
</td>
</tr>
</table>
</body>
</html>
Il riferimento alla label specificata nell'ultima parte del codice della subroutine
page_load, viene fatto tramite il valore dell'id e viene dichiarata nel seguente
codice specifico.
<asp:Label id="ultima_visita" value=""
runat="server" />
Per il corretto funzionamento della pagina bisogna:
- assegnare alla pagina l'estensione aspx (es. index.aspx)
- Anteporre la parte di scripting lato server (la prima descritta nell'articolo)
alla parte html (quella appena descritta)