- Introduzione
- Personal Web Server
- Software di sviluppo
- Implementare il codice
- Server Side Include
- Oggetti built-in
- Oggetto Response
- Oggetto Request
- Oggetto Server
- Oggetto Session
- new
1.
Introduzione
Asp (Acrive Server
Pages) è una tecnologia di casa Microsoft utilizzata dagli
sviluppatori Web per la creazione di siti e applicazioni server-side,
si basa sulla creazione di file di testo con estensione .asp
da salvare come Tutti i File [*.*].
Ho parlato di tecnologia e non di linguaggio dato che, al contrario
di suoi simili come Php o Jsp, l'Asp non ha un linguaggio di scripting
proprietario, ma si server principalmente del VBScript,
non a caso di casa Microsoft, del JScript,
ovvero la versione Microsoft del famoso Javascript, e addirittura
del PerlScript, ovvero tutti linguaggi
altrimenti utili allo sviluppo di controlli client-side.
Quindi, mentre il Php ha una sua sintassi ed una sua semantica,
Asp si appoggia a questi linguaggi tramite i quali non diventa possibile
sviluppare applicazioni di una certa complessità ed interazione
tra un client ed un server, quindi spesso si ricorre all'ausilio
di controlli di tipo ActiveX residenti
sul server Web e mediante i quali è ora possibile operare a pieno.
In questa guida si è scelto di lavorare con JScript,
data la maggiore diffusione del Javascript come linguaggio client-side
tra gli sviluppatori, tornerà di certo più agevole che dover adattare
le proprie conoscenze sintattiche ad un altro linguaggio.
Un esempio chiarificatore, nonchè il più banale da comprendere e
creare, è il famoso caso del contatore di accessi: creando in locale
un'applicazione del genere, con l'ausilio quindi di un linguaggio
di scripting client-side come Javascript, ogni utente vedrebbe sulla
pagina il numero di volte che lui, come singolo utente, ha visitato
quella pagina, non vedendo il numero di reali accessi che la stessa
ha avuto, non considerando anche il fatto che il numero che deve
essere visualizzato deve essere conservato in una struttura diversa
da un file Web, bensì un database o un file di testo, tecnologie
con cui è possibile interagire solo mediante linguaggi server-side.
Vediamo come potrebbe essere rappresentato schematicamente l'esempio
del contatore, se venisse realizzato con una tecnologia client side
o server-side:

Elaborazione client-side |

Elaborazione server-side |
Non è possibile testare una pagina Asp in locale come se fosse un
normale file Html, dato che il processo di interpretazione di un
simile file deve essere eseguito da un server e non dal browser.
A risoluzione di questo problema ci vengono incontro piccoli software
installabili sul proprio PC che fungono da server
Web personali sui quali installare, o che dir si voglia salvare
i file Asp e richiamarli da un browser per visualizzarli tramite
http, come se la conversazione avvenisse
davvero in remoto, cioè tra un client
ed un server.
Tentiamo ora di capire come avviene questa comunicazione, perchè
utilizziamo una tecnologia (o anche linguaggio a questo punto) server-side
e a quali processi di elaborazione e controllo vengono sottoposti
i file Asp.
Il file Asp, come tutti i file di un sito accessibile via Web, risiede
sul server, quando un browser ne fa richiesta, il server lo elabora
passandolo per il suo interprete Asp che, se riscontra un errore
logico o di programmazione, restituisce al browser una pagina di
errore con una piccola descrizione dello stesso, la riga e la posizione;
se invece la pagina supera l'esame, il file torna al server che
lo "trasforma" (non converte) in formato Html e lo invia al browser
richiedente.
Non si pretende che quest'ultimo passaggio sia stato perfettamente
compreso e visto nella sua ampiezza, ma le cose saranno chiare e
tonde a partire dalla terza lezione del manuale.
Dopo tanto parlare di server e di server Web, credo sia il caso
di accennare alle tecnologie di questo tipo che supportano Asp,
onde evitare di sudare per un lavoro ed all'atto della sua pubblicazione
accorgersi di aver pagato uno spazio Web infelice da questo punto
di vista, che quindi non fornisca il supporto dell'Asp.
E' dunque necessario accertarsi che l'hoster a cui ci si rivolge
offra la possibilità di lavorare con Asp e tutte le tecnologie connesse,
e metta anche a disposizione tutti gli ActiveX necessari allo sviluppo
delle singole applicazioni che ci accingiamo a sviluppare.
Non ci si preoccupi al momento di chiedersi quali sono le applicazioni
che si hanno in mente o quali sono le possibili applicazioni che
Asp ci permette di sviluppare, dato che solo con l'avanzamento del
manuale tutto sarà più chiaro e le idee subiranno modifiche e cresceranno.
Per quanto riguarda gli spazi Web gratuiti che supportano Asp, consiglio
vivamente di rivolgersi ai forum di discussione informatici come
quello di HTML.it
e spulciare tra i post nelle apposite sezioni.
2. Personal Web Server
Nella lezione precedente si è accennato all'impossibilità di visualizzare
e testare una pagina Asp in locale: un file presente sul nostro
Hard Disk non può essere direttamente interpretato da un browser,
ma deve prima essere elaborato da un server Web.
A risoluzione di questo problema ci vengono in soccorso taluni software
che simulano sul nostro PC un server Web vero e proprio.
Il più vicino a noi, ovvero il più vicino ad Asp, è il Personal
Web Server della Microsoft, che da ora ci limiteremo a chiamare
PWS.
Il PWS si trova nel CD di installazione di Windows
'98.
Installazione del PWS
Installare il PWS è un'operazione quanto mai semplice, simile in
tutto e per tutto alle tipiche installazioni con interfaccia Windows.
Per facilitare il lettore, al fine di eseguire una corretta installazione
del PWS, si andranno ad evidenziare i passi essenziali dell'installazione:
1. Localizzare la cartella PWS
nel CD di Windows '98
2. Localizzare il file Setup.exe
3. Al momento della Scelta del tipo
di installazione si scelga Tipica
4. Al momento dell'opzione Configurazione
root del web lasciare default
5. Si consiglia di riavviare il sistema quando richiesto
6. Troveremo l'icona del PWS nella barra delle applicazioni,
vicino all'orologio.
Per verificare se l'installazione è andata a buon fine, digitiamo
nella barra degli indirizzi del browser il percorso
http://localhost
dove localhost
è il nome di dominio del nostro server personale.
Si può ottenere lo stesso risultato utilizzando l'IP statico (o
indirizzo di loop-back) del nostro PC, che in genere è
http://127.0.0.1
oppure inserendo il nome del proprio PC
http://lukeonweb
dove in questo caso il nome è lukeonweb.
E' possibile cambiare il nome del PC da Pannello
di controllo / Rete / Identificazione e riavviare il sistema.
A questo punto troveremo sul nostro Hard Disk una nuova cartella
sotto l'unità C:, questa è InetPub
che conterrà un'altra cartella, wwwroot,
che sarà la root (directory principale) del nostro server Web.
Il percorso, dunque, sarà
C:\Inetpub\wwwroot
Per toccare con mano, creiamo un file e chiamiamolo
index.htm e pubblichiamolo (copia e
incolla) in wwwroot e digitiamo nel browser
http://localhost/index.htm
Se il file che abbiamo appena creato si apre, possiamo
non avere più dubbi sulla funzionalità del nostro PWS.
La stessa cosa faremo con tutti i nostri file Asp, basterà copiarli
in wwwroot per essere più che certi che potremo leggerli e testarli
anche in locale.
Prima di chiudere una considerazione: e se avessimo più di un sito
cui stiamo lavorando che necessita di essere visualizzato tramite
il protocollo http?
In breve, sul nostro Hard Disk abbiamo, nella cartella Documenti,
sul Desktop o ovunque, tre cartelle, pippo,
pluto e paperino
e questi sono tre siti che stiamo costruendo.
Non possiamo copiare di sana pianta la cartella e credere di potervi
accedere con l'indirizzo
http://localhost/paperino/index.htm
o meglio NON è questo il procedimento corretto.
Dobbiamo creare delle Virtual Directory,
o directory virtuali, cosa più semplice a farsi che a dirsi:
1. Tasto destro sulla cartella paperino
e selezioniamo Proprietà
2. Clicchiamo sulla scheda Condivisione
Web
3. Selezioniamo l'opzione Condividi
cartella
a questo punto ci apparirà una finestra con delle opzioni
Lettura: Consente al browser di leggere
i file pubblicati
Scittura: Consente al browser di modificare
i file pubblicati
Accesso origine script: Consente di
accedere agli script il lettura ed in scrittura
Esplorazione dierctory: Simile a Gestione
Risorse dei Windows, consente di visualizzare i file
Queste sono le voci principali, noi possiamo limitarci a selezionare
le prime tre elencate, poi clicchiamo su [
OK ].
Sarà a questo punto possibile accedere all'indirizzo
http://localhost/paperino/index.htm
Buon lavoro con Asp!
3. Software di sviluppo
Esistono molti software per lo sviluppo in Asp, molti di questi
ci permettono anche di creare progetti direttamente sul server,
interagendo col server Web, nel nostro caso col PWS.
Secondo la maggior parte degli sviluppatori il migliore, nonchè
a questo punto il più utilizzato, è Ms Visual
InterDev, programma della casa madre di Asp, la Microsoft.
Vediamo subito quali sono i vantaggi che questo software ci offre.
Per prima cosa permette il collegamento in remoto col server, sposanodosi
perfettamente con i server Web della Microsoft stessa, supporta
tutti i linguaggi di scripting server-side e client-side che possono
interagire con Asp, nonchè l'Xml.
Ha un'interfaccia user-friendly come pochi, come tutti i software
di sviluppo del pacchetto Visual Studio,
di cui fa parte, porta sui lati una serie di menu e di griglie con
tutte le proprietà riassunte in maniera schematica ed intelligente.
Colora il codice evidenziando in blu e grassetto le parole chiave
sia nei blocchi di script Asp che in quelli Javascript, colora i
commenti in verde ed il codice hrml con colori diversi, consentendo
una buona lettura del codice, mantenendolo pulito e ordinato.
Supporta una serie di oggetti server di creazione della stessa Microsoft,
chiamati controlli design-time, molto
utili in fase di sviluppo di grosse e complesse applicazioni Web,
limitando e semplificando il lavoro dello sviluppatore, sono oggetti
leggeri, veloci ed estremamente funzionali.
Tra questi ultimi troviamo una serie di oggetti di tipo ActiveX
dalle più svariate funzionalità.
Ultimo di questi pro, nonchè il più vicino alle nostre più immediate
esigenze di apprendimento e di sviluppo, è l'autocompletamento del
codice e la possibilità di scegliere da un menu in popup tutti i
metodi e le proprietà dell'oggetto che stiamo utilizzando, includendo,
all'occorrenza, anche i nomi degli elementi Html (soprattutto form)
a cui potremmo far riferimento in quella routine, il tutto con estrema
discrezione, senza cioè "pensare troppo al posto dello sviluppatore",
InterDev non crede di aver capito cosa vogliamo fare e lo fa da
solo, magari facendo perdere tempo in correzioni, ma si limita a
darci degli utili suggerimenti.
Vediamo un esempio del comportamento di InterDev durante la scrittura
di una porzione di codice:

Esistono comunque anche dei contro, come tutti gli
editor, anche InterDev offre la possibilità di lavorare sull'Html
in maniera visuale, ma finisce per formattare il codice in maniera
"lievemente diversa" da come lo abbiamo scritto noi, rischiando
di restituire dei malfunzionamenti dovuti ad esempio all'omissione
di un apice in una porzione di codice.
Consiglio dunque agli sviluppatori che decidessero di servirsi del
suddetto software di evitare di utilizzare questa funzione del programma.
Tuttavia nel corso di questo manuale non ci saranno altri riferimenti
ad InterDev, a Notepad, con cui è possibile lavorare in Asp, o ad
altri software, ma si focalizzerà l'attenzione sulla sintassi e
la filosofia dell'Asp.
Altri software di sviluppo per Asp sono AspEdit
ed altri normali editor Html dove sia stata selezionata l'opzione
del supporto di Asp all'atto dell'installazione, come HotDog,
HomeSite, Dreamweaver
ecc...
Il mio consiglio, li dove ce ne fosse la possibilità, è quello di
lavorare con InterDev, altrimenti il Notepad è più che sufficiente.
4. Implementare il codice
Fatto tesoro di quanto appreso fin ora, possiamo da questo momento
dedicarci completamente alla programmazione con Asp ed alla sua
sintassi.
Asp ha dei suoi delimitatori proprietari per il codice, un blocco
di script inizia con i simboli <%
e finisce con i simboli %>, oppure
è possibile utilizzare il Tag <script>,
corredandolo degli attributi language="JScript"
e runat="Server".
Una pagina Asp inizia con la dichiarazione del linguaggio di scripting,
la dichiarazione è obbligatoria e va inclusa come prima riga della
pagina, prima quindi di tutto il codice Html, ed anche del Tag <html>,
la dichiarazione è la seguente:
<%@ LANGUAGE = JScript %>
nel caso in cui il linguaggio utilizzato sia JScript.
Vediamo ora come inserire nella pagina un blocco di script:
<% //Codice Asp, commentato per JScript %>
Nota: quando
utilizziamo la sintassi appena vista, cioè i simboli <%
e %>, il server riconosce automaticamente
il linguaggio di scripting che abbiamo settato per default.
A questo proposito ci torna in aiuto l'utilizzo del Tag <script>:
se settiamo come linguaggio di default il JScript ad esempio, scriveremo
il codice Asp-JScript tra gli appositi delimitatori, ma possiamo
comunque scrivere in Asp-VBScript dichiarando il tipo di linguaggio
"al volo" appunto con l'utilizzo del Tag <script>.
Constatiamo quanto appena detto con una pagina di esempio, scrivendo
il classico programma Hello World!
<%@ LANGUAGE = JScript %>
<html>
<head>
<title>La mia prima pagina Asp</title>
</head>
<body>
<%
Response.Write("Hello World!");
%>
<br><br>
<script language="VBScript" runat="Server">
response.write "Hello World!"
</script>
</body>
</html>
Salviamo questo file come prova1.asp
e pubblichiamolo nella root del nostro PWS, poi apriamo il browser
digitiamo http://localhost/prova1.asp.
Potremo notare che, visualizzando il codice Html, non vedremo le
istruzioni Asp che abbiamo utilizzato, bensì la sola scritta Hello
World!
Questo perchè, come già detto, il server elabora la pagina Asp e
la restituisce al browser come Html puro.
Proviamo subito a scrivere qualcosa di un po più divertente, scriviamo
sulla nostra pagina Asp l'ora corrente, che non sarà come in Javascript
l'orario di sistema del proprio PC, ma l'orario del server dov'è
pubblicata la pagina.
Ovviamente testando la pagina col PWS l'orario sarà comunque lo
stesso del nostro sistema, dato che il nostro PC viene utilizzato
come srver.
Creiamo il file prova2.asp e scriviamo:
<%@ LANGUAGE = JScript %>
<html>
<head>
<title>Ricavare l'ora con Asp</title>
</head>
<body>
<%
var data = new Date();
var orario = data.getHours() + ":" + data.getMinutes() + ":" + data.getSeconds();
Response.Write("Sono le ore " + orario);
%>
</body>
</html>
Noteremo che la pagina che viene restituita al browser
non mostrerà la sintassi utilizzata all'interno del codice, ma l'orario
(del server, NON del client) del momento in cui la pagina è stata
inviata al browser, come nell'esempio sottostante:
Sono le ore 16:9:57
Nella prossima lezione affronteremo un altro metodo per l'inserimento
del codice nelle pagine Asp, le inclusioni lato server con Server
Side Include.
5. Server Side Include
La libreria Server Side Include (SSI)
è un'opzione di cui è dotato l'Asp, si tratta di un richiamo eseguibile
da una pagina Asp verso un file Asp esterno contenente solo del
codice Asp, o a file con estensione .inc
(dove inc sta per "include").
E' possibile in questo modo scrivere una porzione di codice, come
ad esempio una connessione al database, in un unico file esterno
che potrà essere richiamato in tutte le pagine che necessitano di
detto codice, in maniera tale da snellire sia il codice della pagina
corrente che il lavoro dello sviluppatore.
Il richiamo ai SSI somiglia ad un commento Html. Il comando più
noto dei SSI è #include e l'attributo
(pensando in Html) più usato è file="connessione.asp"
(o .inc), funzione che ci permette per l'appunto di richiamare file
esterni.
La sintassi corretta per richiamare un file tramite la tecnologia
SSI è
<!--#include file="connessione.asp"-->
dove, come già detto, nel file connessione.asp si
trova lo script che consente all'applicazione Asp di interfacciarsi
con un Database.
Questo richiamo va inserito nell'Header della pagina, tra i Tag
<head> e </head>
oppure all'inizio del file, prima della dichiarazione iniziale dell'Asp
e prima del Tag <html>.
Ancora, nel caso in cui lo script preveda la stampa a video di un
risultato, l'SSI può essere inserito all'interno del body della
pagina nella posizione in cui deve apparire il valore a video, ne
più ne meno di come si comportano i file Javascript (.js) esterni.
Nel caso precedente della stampa a video della data, avremmo potuto
scrivere
<%@ LANGUAGE = JScript %>
<html>
<head>
<title>Ricavare l'ora con Asp</title>
</head>
<body>
<div><!--#include file="data.inc"--></div>
</body>
</html>
Non tutti i server che supportano Asp supportano
necessariamente anche gli SSI, è bene quindi informarsi presso il
proprio (o eventuale) hoster in merito al loro supporto.
E' già difficile trovare spazi Web gratuiti che supportino Asp,
ed è quasi impossibile sperare di trovarne uno che supporti anche
gli SSI, consiglio quindi di effettuare un'accurata ricerca prima
di scegliere l'Host su cui pubblicare il proprio sito, sia esso
gratuito che a pagamento.
6. Oggetti built-in
Asp offre ai programmatori una serie di oggetti server detti built-in,
indispensabili per sfruttare al meglio i controlli detti ActiveX
su cui si basa la sua modalità di programmazione.
Come già accennato nelle precedenti lezioni, gli ActiveX sono degli
oggetti residenti sul server Web a cui le applicazioni Asp fanno
correntemente riferimento, un classico esempio è CDONTS
con cui è possibile inviare email.
In genere questi componenti vengono scritti in C++, Visual Basic,
Java ed altri linguaggi dello stesso tipo, è anche possibile scriverne
uno da se ed installarlo sul proprio server Web, se si ha la possibilità
di essere amministratori di una simile tecnologia.
Nel corso di questa lezione esamineremo genericamente quali sono
gli oggetti built-in che ci faranno compagnia nel corso della realizzazione
di tutte le nostre applicazioni Asp, le prossime lezioni saranno
poi dedicate alla specifica descrizione di ogni singolo oggetto
built-in, con esempi e riferimenti ai Tutorial
di questo sito.
Elenco degli oggetti built-in
- Response
- Il suo metodo principale è Write(),
il suo comportamento è del tutto analogo a quello del document.write()
di Javascript, ovvero restituisce in output un testo o dei Tag
Html, il metodo Redirect(), invece,
si comporta come il location.href
di Javascript, attenzione però, non è possibile generare un
link, ma solo, ad esempio, reindirizzare l'utente ad una pagina
a seconda di determinate condizioni.
- Request
- Molto più vasto del precedente, questo oggetto torna utile
per uno scambio di dati tra pagine diverse, il metodo più utilizzato
è Form() che reperisce dati (tramite
il metodo di invio post) da un modulo Html.
- Server
- Meno immediato dei precedenti, si occupa di reperire proprietà
del server, il metodo più utilizzato è MapPath()
che permette di specificare la Url relativa di un database o
di un file di testo con cui l'applicazione deve interagire.
- Session
- Come il termine lascia immaginare, questo oggetto si occupa
della gestione delle sessioni degli utenti, indispensabile,
ad esempio, per la creazione di un'area di accesso riservato
.
- Application
- Permette di condividere informazioni in maniera contemporanea
con tutti gli utenti dell'applicazione, un classico esempio
è la chat.
Questi saranno i titoli dei prossimi cinque appuntamenti
col manuale di Asp, entrare nell'ottica in cui spero di avervi indotto
con queste poche righe è indispensabile per affrontare in maniera
corretta sia le prossime lezioni in se che, di conseguenza, la programmazione
Asp.
7. Oggetto Response
Eccoci di fronte al primo degli oggetti built-in offerti da Asp,
trattasi di Response che, come accennato
nella lezione precedente, si occupa di inviare output al client
dell'applicazione, ovvero al browser dell'utente che sta visualizzando
la pagina, vediamo subito le principali proprietà e metodi disponibili.
Proprietà dell'oggetto Response
Buffer
Serve a bufferizzare l'output in una pagina, per default è settata
su false, quindi gli output non sono normalmente bufferizzati.
Bufferizzare un output vuol dire inviare risposte al client in tempo
reale al verificarsi di un evento, ad esempio la registrazione di
un dato su un database: come già detto il server Web restituisce
al client una pagina in formato Html, è quindi impossibile modificarne
il contenuto senza inviare una nuova richiesta, lì dove l'output
non è bufferizzato.
Per indicare al server Web che l'output deve essere bufferizzato
si inizia uno script Asp con la dichiarazione
Response.Buffer = true;
Cookies
Serve ad inviare un cookie al client dell'applicazione una volta
creato, si utilizza l'espressione
Response.Cookies("NOME_DEL_COOKIE");
Expires
Indica la durata del cookie all'interno della cache del browser,
si indicano in genere i giorni di durata, se ad esempio il cookie
deve scadere dopo un mese potremmo scrivere
Response.Expires = 30;
I cookie saranno oggetto di un capitolo dedicato
più avanti nel corso del manuale.
Metodi dell'oggetto Response
Clear
Ripulisce un output bufferizzato
Flush
Restituisce al client un output bufferizzato
IsClientConnected
Verifica se un client utilizzato da un utente registrato ad esempio
ad un servizio è connesso o meno, ovvero quello che vediamo sui
forum quando ci vengono segnalati i nickname degli utenti attualmente
online
Redirect
Reindirizza un utente ad una determinata pagina al verificarsi o
meno di una determinata condizione, immaginiamo di creare un controllo
su dei campi di un modulo, possiamo stabilire che se una condizione
non viene soddisfatta, l'utente verrà rimandato ad una determinata
pagina di errore creata ad hoc, la sua sintassi è molto semplice
Response.Redirect("errore.htm");
Write
Come accennato nella lezione precedente, questo particolare metodo
si comporta come il document.write() di Javascript, possiamo
utilizzarlo per far visualizzare all'utente un messaggio differente
a seconda che una condizione sia stata soddisfatta o meno, più o
meno come nel caso esposto in precedenza del metodo Redirect
Response.Write("Non hai compilato tutti i campi obbligatori")
8. Oggetto Request
Meno immediato del precedente, l'oggetto Request
serve ad inviare delle richieste al server Web, ad esempio tramite
un modulo.
I quattro metodi principali di questo oggetto sono Cookies,
Form, QueryString
e ServerVariables.
Occupiamoci subito del primo e dell'ultimo metodo elencato, per
lasciare spazio ai due centrali più frequentemente utilizzati.
Request.Cookies
Serve a recuperare un cookie, la sintassi è semplice
Request.Cookies("NOME_DEL_COOKIE")
Request.ServerVariables
Serve a recuperare una serie di variabili d'ambiente proprietarie
del server Web di appartenenza o dei server Web collegati, ecco
un elenco delle principali classi utilizzabili:
ALL_HTTP - Restituisce gli header http
richiesti dal client
HTTP_COOKIE - Booleano, restituisce
true o false a seconda che i cookie siano abilitati o meno
HTTP_REFERER - Restituisce il nome
ed il dominio di un sito da cui è partita una richiesta da un client
HTTP_USER_AGENT - Restituisce il sistema
operativo del client che si collega all'applicazione
HTTPS - Booleano, restituisce true
o false a seconda che la connessione sia protetta da SSL
LOCAL_ADDR - Restituisce l'indirizzo
del server Web di appartenenza
QUERY_STRING - Restituisce l'intera
querystring associata alla richiesta del client
REMOTE_ADDR - Restituisce l'indirizzo
IP server Web richiedente
REMOTE_HOST - Restituisce il nome del
server Web richiedente
La sintassi è molto semplice
Request.ServerVariables("REMOTE_ADDR");
Request.Form
Questo è il primo metodo con cui è possibile inviare un pacchetto
di dati al server Web perchè li elabori, il modulo Html verrà inviato
specificando il metodo post, ad esempio
<form action="elabora.asp" method="post">
In questo caso il post avverrà al file elabora.asp,
vediamo uno spezzone di un potenziale codice di questo file, che
si occupi di inviare dati in un database o di altro non ci interessa,
l'unica cosa che ci interessa è recuperare i dati inviati dal modulo:
var nome = Request.Form("nome");
dove la variabile nome è indicativa, in genere
si utilizza lo stesso nome del campo a cui è associata, passato
tra parentesi e tra doppi apici alla fine della stringa.
Esiste un altro modo di recuperare i dati da un form con questo
metodo, è in realtà analogo ma in forma più completa, cioè passando
la richiesta in una nuova stringa:
var nome = new String(Request.Form("nome"));
Ecco un classico esempio di differenza tra linguaggi
di scripting client-side e server-side: non è possibile, ad esempio
con Javascript, passare un dato tra due o più file, data l'impossibilità
da parte di qualsiasi gestore di occuparsene... Asp pone rimedio
a questo limite!
Request.QueryString
Simile al precedente, possiamo con questo metodo recuperare dati
da un modulo appendendone i valori alla fine dell'Url della pagina
di destinazione, ad esempio di elabora.asp, vediamo un esempio
di possibile Url:
http://www.server.it/elabora.asp?nome=Luca
Prima di passare ad esempi concreti, analizziamo gli elementi e
la struttura di una querystring:
? - Concatena il primo valore alla
Url della pagina
& - Concatena dal secondo valore in
poi alla Url della pagina
= - Identifica il valore
+ - Separa più parole (o valori) di
una QueryString
Ecco un esempio più completo:
http://www.server.it/elabora.asp?nome=Luca&cognome=Ruggiero
Se il cognome fosse composto da più parole, ad esempio De Ruggiero,
verrebbe utilizzato il carattere +
in questo modo:
http://www.server.it/elabora.asp?nome=Luca&cognome=De+Ruggiero
Per reperire dati in questo modo dobbiamo inviare il form col metodo
get, stabilito per default dalle convenzioni Html, ma è comunque
meglio specificarlo:
<form action="elabora.asp" method="get">
Come nel caso precedente, possiamo recuperare il
valore di un campo sia con la semplice dichiarazione
var nome = Request.QueryString("nome");
che con la più completa
var nome = new String(Request.QueryString("nome"));
E' opportuno evitare di utilizzare questo metodo
per passare alla pagina Asp che elaborerà i dati nei casi in cui
vengono inviati valori tipo password o carte di credito, venendo
messi in chiaro sull'indirizzo della pagina, sarà possibile che
un occhio indiscreto li legga stando seduto a fianco all'utente
che compila il modulo, o che venga sfruttato da qualche professionista
buontempone un bug di un browser per impossessarsi di certi dati.
Un esempio pratico dell'utilizzo del metodo
Request.QueryString
La funzionalità di questo metodo ci permette di creare dei link
che puntano direttamente alla querystring associata all'indirizzo,
potremmo quindi creare un solo file Asp che, a seconda della querystring
passata generi output diversi.
Creiamo un sommario di argomenti nel file index.htm:
<div>
<a href="pagina.asp?id=1">Link a pagina 1</a><br>
<a href="pagina.asp?id=2">Link a pagina 2</a><br>
<a href="pagina.asp?id=3">Link a pagina 3</a><br>
</div>
In questo modo il file pagina.asp
andrà a leggere la querystring passatagli nel link e si comporterà
di conseguenza, immaginiamo di voler includere con le SSI
un file diverso per ogni richiesta, ad esempio pagina1.htm,
pagina2.htm e così via, ecco come si presenta il codice di
pagina.asp:
<%@LANGUAGE = JScript%>
<%
var id = new String(Request.QueryString("id"));
%>
<html>
<head>
<title>Oggetto Request</title>
</head>
<body>
<%if ((id == "") || (id == "undefined")) {%> ERRORE 404 - File non trovato <%}%>
<%if (id == "1") {%> <!--#include file="pagina1.htm"--> <%}%>
<%if (id == "2") {%> <!--#include file="pagina2.htm"--> <%}%>
<%if (id == "3") {%> <!--#include file="pagina3.htm"--> <%}%>
</body>
</html>
9. Oggetto Server
Come già detto nel paragrafo di presentazione generale degli oggetti
built-in, l'oggetto Server, con i suoi
quattro metodi ed una sola proprietà, fornisce alcune risposte dal
server, spesso di estrema utilità per la realizzazione di applicazioni
Web basate sul linguaggio Asp.
Esaminiamo dunque proprietà e metodi di questo oggetto.
Proprietà
La sola proprietà di cui dispone l'oggetto built-in Server è ScriptTimeout
che specifica, in secondi, la durata di esecuzione dello script,
oltre il cui tempo, lo script cessa di funzionare fino ad una nuova
richiesta http lanciata al server dal browser.
La stringa
Server.ScriptTimeout = 300;
impegna il server ad eseguire lo script in soli
cinque secondi (5 X 60 = 300), allo scadere del tempo stabilito
il server terminerà di processare la pagina Asp in questione.
Metodi
Come già detto in precedenza, Server dispone di quattro metodi,
esaminiamoli in ordine.
Il metodo CreateObject serve a generare
una nuova istanza di una classe, in genere si tratta di componenti
ActiveX (che esamineremo più avanti nel corso del manuale), ecco
i principali:
- MSWC.AdRotator - classe utilizzata per
generare circuiti di rotazione banner
- MSWC.BrowserType - classe che fornisce
una serie di informazioni sul browser dell'utente, utile per
creare sistemi di statistiche
- Scripting.FileSystemObject - classe
che consente di interagire con file e cartelle direttamente
sul server
- ADODB.Connection - classe che offre
connettività ad una fonte di dati ADO (un database)
Quest'ultimo è sicuramente il più sfruttato, ipotizziamo
la creazione di una connessione ad un database, dichiareremo una
nuova classe ADODB.Connection, vediamo come:
var MiaConnessione = Server.CreateObject("ADODB.Connection");
Il secondo metodo dell'oggetto Server è HTMLEncode
consente di applicare la codifica Html ad una stringa; questa tecnica
è molto sfruttata per evitare il replace dei caratteri < e >
durante la registrazione di un modulo, per evitare che, eventuali
Tag Html inseriti, vengano interpretati come tali dal browser, rischiando
di confondere notevolmente la struttura della pagina.
Ad esempio, la stringa
Response.Write(Server.HTMLEncode("<i>Hello World!</i>"));
non restituirà Hello World!, bensì <i>Hello
World!</i> nel codice, quindi <i>Hello
World!</i> a video.
Il metodo MapPath serve a localizzare
la un file con cui stiamo lavorando, sia che si tratti di un file
di testo, di un file Xml, di un database ecc...
Riprendiamo l'esempio della connessione al database, nella creazione
della stringa di connessione al file del DBMS che utilizziamo, dobbiamo
specificare la posizione del file stesso sul server: MapPath ci
permette di specificare il percorso relativo partendo dal file che
lo richiama, piuttosto che il percorso assoluto.
Ad esempio, la stringa
Server.MapPath("database.mdb"));
permette di evitare di specificare un indirizzo
del tipo
http://www.miosito.it/cartella/database.mdb
Ultimo metodo dell'oggetto Server, forse il meno
utilizzato, è URLEncode, che aggiunge
ad un'URL la sua codifica naturale: se, ad esempio, un file è stato
nominato con degli spazi all'interno, come mio
file.asp, URLEncode è in grado di aggiungere i caratteri
%20 per unire le parole separate, restituendo
mio%20file.asp
10. Oggetto Session
L'oggetto built-in Session
è talvolta indispensabile nell'ambito delle applicazioni
Asp per la gestione di informazioni relative agli utenti; il suo
scopo, infatti, è quello di memorizzare informazioni in un file
e consentire al server Web di trasportarle in pagine diverse da
quella in cui sono state inizializzate.
Iniziamo con un semplice esempio, memorizziamo in una sessione
una stringa di testo, consideriamo il seguente codice:
<%@LANGUAGE = JScript%>
<%
Session("esempio") = "Hello World!";
%>
<html>
<head>
<title>Oggetto Session</title>
</head>
<body>
<%
Response.Write(Session("esempio"));
%>
</body>
</html>
E' normale immaginare che il risultato di un simile
esperimento sia la stampa a video della stringa "Hello World!".
Proviamo adesso da aggiungere un link a questo codice che punti
ad un'altra pagina, in cui scriveremo
<%@LANGUAGE = JScript%>
<html>
<head>
<title>Oggetto Session</title>
</head>
<body>
<%
Response.Write(Session("esempio"));
%>
</body>
</html>
Anche in questo caso, nella seconda pagina, comparirà
la scritta "Hello World!".
Proviamo adesso a chiudere la pagina ed a riaprirla: probabilmente
la scritta "Hello World!" sarà ancora visibile, questo perchè, probabilmente
il server Web non ha ancora distrutto la sessione, conservandola
in una particolare area di memoria.
Ad un riavvio del server, o del sistema, aprendo il secondo file
non dovrebbe apparire nulla, oppure la scritta undefined,
ciò vuol dire che la sessione è stata distrutta.
Asp offre la possibilità di distruggere la sessione manualmente;
il metodo Abandon() consente di terminare
all'istante la sessione, questa è la tecnica con cui vengono costruite
le pagine di logout per gli utenti; la proprietà Timeout,
invece, consente di specificare in minuti il tempo che dovrà trascorrere
prima che la sessione venga distrutta.
Solitamente una sessione muore dopo 20 minuti di inattività dell'utente,
cioè prima che venga inviata al server una nuova richiesta http.
Scrivendo
Session.Timeout = 30;
modificheremo il tempo di scadenza della sessione
da 20 minuti a mezzora.
Un esempio pratico: un'area di accesso riservato
La maniera più spicciola di mettere in pratica quanto detto è la
realizzazione di una semplice area di accesso riservato... di solito
il nome utente e la password vengono estratti da un database: non
essendo ancora giunti a questo punto, ci limiteremo a memorizzare
in delle semplici variabili una coppia di valori che serviranno
ad un singolo utente a loggarsi.
Utilizzeremo un semplice modulo Html per permettere il login, immaginiamo
di essere i soli sul nostro sito ad avere accesso a determinate
informazioni contenute in determinate pagine; creiamo all'interno
della cartella privata il file index.asp:
<%@LANGUAGE = JScript%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
<form method="post" action="login.asp">
Username<br>
<input type="text" name="username"><br>
Password<br>
<input type="password" name="password"><br>
<input type="submit" value="Login">
</form>
</body>
</html>
Passo secondo, inviamo il modulo al file login.asp,
utilizzeremo come username admin, e
come password prova:
<%@LANGUAGE = JScript%>
<%
// RECUPERO I DATI DAL MODULO
var username = new String(Request.Form("username"));
var password = new String(Request.Form("password"));
// QUI SPECIFICO LA USERNAME E LA PASSWORD
if ((username != "admin") || (password != "prova")) {
Response.Write("ACCESSO NEGATO");
Response.End;
}
else {
// CREO LA SESSIONE ATTRIBUENDOLE IL VALORE DELL'UTENTE LOGGATO
// IN QUESTO CASO SI TRATTA DI UN UTENTE STATICO, MA LA TECNICA E' QUESTA
Session("username") = username;
Response.Redirect("privata.asp");
}
%>
Il file privata.asp
è considerabile come la reale Homepage dell'area
riservata:
<%@LANGUAGE = JScript%>
<%
if (Session("username") == null) {
Response.Write("ACCESSO NEGATO");
Response.End;
}
%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
... CONTENUTO DELL'AREA PRIVATA ... ... ...
<a href="logout.asp">LOGOUT</a>
</body>
</html>
Tutti i file facenti parte dell'area riservata devono
contenere il codice evidenziato in rosso prima di qualsiasi Tag
Html, in modo da inibire l'accesso qualora la sessione fosse nulla;
supponiamo che da questa pagina fosse possibile anche effettuare
il logout, creiamo quindi un link verso il file logout.asp:
<%@LANGUAGE = JScript%>
<%
Session.Abandon();
%>
<html>
<head>
<title>Area privata</title>
</head>
<body>
<div align="center">ARRIVEDERCI!!!</div>
</body>
</html>
Con questo semplice e funzionale esempio di area
di accesso riservato si conclude la decima lezione di questo manuale,
oggetto della prossima lezione è l'ultimo degli oggetti built-in
di Asp: Application.
|
|