Corso di ASP
parte
seconda
Creare pagine html interattive non è più un lavoro da
professionisti. Oggi, grazie alle active server pages è tutto più semplice
e divertente. Impariamo a programmare in asp in poche lezioni
In
questa puntata:
come realizzare un feedback form, l'istruzione Select Case, come
includere file esterni, come utilizzare le variabili del server ed infine
come realizzare un web-counter.
di
Nanni Bassetti nannib@libero.it
APS…QUESTI SCONOSCIUTI
ATTENZIONE: per far funzionare
il mailform bisogna procurarsi il file smtpsvg lo trovate anche sulla mia
home page.
Bentornati nel mondo della programmazione ASP, in questa puntata il
gioco comincerà a farsi duro….ma è adesso che i duri devono cominciare a
giocare.
Nella prima puntata si è definito l'Active Server Pages come un
filtro ISAPI, aggiunto all'Internet Information Server di Windows NT; in
altre parole ASP è un linguaggio di programmazione, di tipo script, che
viene eseguito sul server e genera in output del codice HTML.
La
differenza dagli altri scripts languages (Javascript, VBScript), consiste
nel fatto che ASP si comporta come un file CGI, cioè non è possibile
visualizzare dal browser il codice sorgente del linguaggio, ma solo
l'output, inoltre ASP permette anche l'interazione con i
DataBase.
In
questa puntata si passerà subito all'azione con l'analisi di programmi
utili ed immediatamente applicabili, come la costruzione di un feedback
form, di cui si può ammirare il listato nell'esempio1
Esempio 1:
File HTML del form:
<html><head>
<title>Input form
per AspMail</title>
</head>
<body
bgcolor="ffffff">
Un semplice modulo di richiesta
<!-- il tag form ha un action che richiama il file
aspmail2.asp che processera' le informazioni
provenienti dal modulo -->
<form method="POST"
action="aspmail2.asp">
<table border="0">
<tr>
<td>Nome</td>
<!-- ogni box di testo deve avere un nome per
essere identificata -->
<td><input type="TEXT" name="nome"
size="25"> </td></tr>
<tr>
<td>Telefono #</td>
<td><input type="TEXT" name="tel"
size="15"> </td>
</tr>
<tr>
<td>Indirizzo</td>
<td><textarea name="indirizzo" rows="3"
cols="30"></textarea> </td>
</tr>
<tr>
<td>Email: </td>
<td><input type="TEXT" name="email"
size="20"> </td>
</tr>
<tr>
<td>Eventuali annotazioni</td>
<td><textarea NAME="commenti" ROWS="4"
COLS="30"></textarea> </td>
</tr>
<tr>
<td><input
type="SUBMIT" value="Invia">
</td></tr>
</table>
</form>
</body>
</html>
ASPMAIL2.ASP:
<html>
<head>
<title>Request
con le variabili</title>
</head>
<body bgcolor="ffffff">
<!-- request.form("tel") prende il valore
contenuto nella box che si chiama "tel" e lo assegna alla variabile strTel
e cosi' per tutti le altre -->
<%
rem il metodo Serve.CreateObject crea delle
istanze a degli oggetti preesistenti come
rem (SMTPsvgMailer) creando
cosi' un oggetto.
rem la variabile Mailer è un'istanza dell'oggetto
SMTPsvgMailer, cioè è una variabile che assume rem tutte le
caratteristiche ed i metodi dell'oggetto di cui è istanza ovvero il
FromName,
rem FromAddress,il RemoteHost, il Recipient, BodyText, ecc.
ecc.
Set Mailer =
Server.CreateObject("SMTPsvg.Mailer")
strNome = request.form("nome")
strTel = request.form("tel")
strIndirizzo = request.form("indirizzo")
strEmail = request.form("email")
strCommenti = request.form("commenti")
rem - assegno il nome del mittente e l'indirizzo del
mittente
rem - ATTENZIONE: Questi sono campi obbligatori
Mailer.FromName = strNome
Mailer.FromAddress = strEmail
rem - assegno l'indirizzo della macchina SMTP
dell'host remoto
rem - grazie alla quale potro' inoltrare la
posta.
strMailHost = "mail.xxx.it"
Mailer.RemoteHost = strMailHost
rem - Assegno l'indirizzo del destinatario cioe' il
mio.
Mailer.Recipient "nannib@libero.it"
rem - Assegno la stringa dell'oggetto o titolo
(Subject) della mail.
Mailer.Subject = "Modulo on line di
informazioni"
rem - Inserisco il corpo del messaggio
rem ogni
variabile strBody etc. etc. assume il valore della stringa tra le
virgolette piu' i caratteri
rem vbCrLf che sono il Carriage Return ed
il Line Feed che servono ad andare a capo.
rem ogni volta alla strBody
successiva si concatena il valore della strBody precedente
rem cosi'
alla fina la strBody sara' una stringona rappresentante tutto il corpo del
messaggio.
strBody = "Caro Nanni Bassetti" & vbCrLf &
vbCrLf
strBody = strBody & "Il mio nome e' " &
strNome & vbCrLf
strBody = strBody & "Abito in ."
&strIndirizzo & vbCrLf
strBody = strBody & "Il mio numero di telefono e'
" & strTel & vbCrLf
strBody = strBody & "La mia E-mail e': "
&strEmail & vbCrLf
strBody = strBody & "Ecco i miei commenti al tuo
lavoro': " &strCommenti & vbCrLf
Mailer.BodyText = strBody
rem assegno alla variabile strPrimaLinea la stringa
"Il tuo Nome e'" seguita dal valore contenuto rem nella variabile strNome
e cosi' per gli altri. Questo per il report finale.
strPrimaLinea = "Il tuo Nome e': " & strNome
strSecLinea = "Il tuo numero di telefono e': " &
strTel
strTerzaLinea = "Il tuo indirizzo e': " &
strIndirizzo
strQuartaLinea="La tua e-mail e':"
&strEmail
strQuintaLinea="Le tue annotazioni
sono:"&strCommenti
rem - Invio il messaggio
rem SendMail puo' ritornare un valore di True o di
False
rem se Mailer.SendMail (implicitamente significa che e' True )
allora apparira' sul browser il
rem messaggio "Posta
Inviata" ed un report dei dati inseriti altrimenti (else) appare un
messaggio
rem che comunica che ci sono stati problemi nell'invio del
messaggio.
if Mailer.SendMail then
Response.Write "Posta Inviata..."
rem infine grazie all'oggetto response ed usando il
metodo write stamo a video il valore delle
rem variabili seguite da un
response.write strPrimaLinea &
"<br>"
response.write strSecLinea &
"<BR>"
response.write strTerzaLinea &
"<BR>"
response.write strQuartaLinea &
"<BR>"
response.write strQuintaLinea &
"<BR>"
else
Response.Write "Mail fallita. Controlla il nome del
server e la connessione tcp/ip…<br>"
Response.Write Mailer.Response
end if
%>
</body>
</html>
Con questo semplice e comprensibile programmino ora siete in grado
di gestire i forms on line semplicemente facendo un upload dei files (il
file html + il file asp) nella vostra directory di lavoro.
Se
si vogliono aumentare o diminuire i campi del form, basterà aumentare o
diminuire le variabili associate agli elementi di
<input> del modulo.
Chiaramente se si vogliono usare delle check box o dei radio
buttons basterà assegnare loro un valore (VALUE="…") ed un nome (NAME="…")
come si è sempre fatto in HTML.
Per concludere il commento all'esempio 1, ricordiamo che l'SMTP
(Simple Mail Transfer Protocol) è il protocollo di trasmissione usato per
la posta elettronica e quando dobbiamo inviare un messaggio dobbiamo
sempre indicare l'SMTP server, cioè l'indirizzo della macchina che si
occupa di inviare i messaggi.
Fermi ! ancora un po' di pazienza prima di buttarsi sulla tastiera
bisogna acquisire ancora altri mezzi, infatti per creare un programma in
un qualsiasi linguaggio le tre cose fondamentali da sapere
sono:
-
le istruzioni di assegnazione (es. x=5)
-
le istruzioni di iterazione (For…To..Next visto nella scorsa
puntata)
-
le istruzioni di controllo (If … Then…End If)
Ed
a questo proposito ecco qui un esempio ad hoc per ciò che riguarda le
istruzioni di controllo:
ESEMPIO 2:
<TITLE>Stipendiometro in
ASP</TITLE>
<body bgcolor="ffffff">
Inserisci un numero da 0 a 4
<form>
<p> Inserisci il tuo grado
di stipendio (0-4):
<p><input type="text"
name="grado"><br>
<p><input type="submit"
name="Invia">
</form>
<%
rem creazione della variabile GradoSalario di tipo
Variant cioe' una variabile che può contenere
rem diversi tipi di dati
(numeri, stringhe, ecc.)
dim GradoSalario
rem assegno il valore della textbox alla variabile
GradoSalario
GradoSalario=request.form("grado")
rem l'istruzione Select Case … End Select e' un
switch multiplo, cioe' un come se ci fossero
rem piu' blocchi if then end if
Select Case GradoSalario
rem nel caso in cui GradoSalario e' uguale a 0 o
uguale ad 1 allora stampa "Sei un povero barbone"
rem e cosi' via…
case 0,1
response.write("Sei un
povero barbone !")
case
2,3
response.write("Buongiorno Signore !")
case 4
response.write("Eccellenza come va ?")
End
Select
%>
</body>
</html>
Ancora fame di istruzioni ASP ?
Allora come promesso nella scorsa puntata, qui vedremo il comando
<!-- #INCLUDE della libreria di comandi Server Side Include
(SSI) ed analizzeremo gli aspetti più importanti degli oggetti Request e
Response.
Al
comando #Include, SSI esegue una funzione simile alla direttiva
#include del C e C++ e cioè include il contenuto di un file in un
file .asp.
Il
file incluso può essere di testo, HTML, .asp, di grafica o qualsiasi altro
file presente sul server.
Se, per esempio, il vostro sito è composto da centinaia di pagine e
si desiedera dare a tutte un aspetto uniforme (usando lo stesso template),
invece di ricostruire tutto il codice html per ogni pagina, grazie all'SSI
basterà inserire il template in un file da includere in tutte le
pagine.
L'inserimento di un file esterno ha la seguente
sintassi:
<!-- #INCLUDE FILE="img.inc" -->
dove il file img.inc è posizionato nella stessa directory del file
di destinazione può contenere il seguente codice (per esempio):
<IMG SRC="http:/www.italystore.com/asp/img/button2.gif"
WIDTH="80" HEIGHT="20" ALT="bottone" ALIGN="CENTER"
BORDER="0">
così se vogliamo inserire il bottone (button2.gif) in tutto nostro
sito web, basterà usare una riga invece di riscrivere tutto il codice html
associato.
Un
altro metodo per includere i file esterni è:
<!-- #INCLUDE VIRTUAL="img.inc" -->
dove img.inc si trova nella directory di default:
\winnt\system32\inetsrv
però è creare delle sottodirectory, per esempio
\winnt\system32\inetsrv\nanni_asp
e
l'include diverrà:
<!-- #INCLUDE VIRTUAL="/nanni_asp/img.inc" -->
Per concludere questa lezione facciamo una breve carrellata sugli
oggetti Request e Response;
come avevamo visto l'oggetto Request richiede iìle informazioni da
diverse fonti (le collezioni) e la collezione usata fin'ora è stata la
Form, ma ci sono altre come:
la
Form, la Cookie, la ServerVariables.
L'insieme ServerVariables informa di tutto ciò che il server sa
riguardo al client ed a se stesso, se ad esempio si scrive il seguente
codice:
<% a=Request.ServerVariables("HTTP_USER_AGENT") %>
<% Response.Write(a) %>
si
otterrà la visualizzazione su l browser del tipo di software client si sta
usando (il che può essere molto utile quando si intende presentare un
codice HTML ottimizzato per ogni dato client).
Ecco alcune variabili del server:
HTTP_REFERER URL della pagina indicato dall'utente al documento del
sito
HTTP_UA_PIXELS Risoluzione del monitore con il browser del
client
HTTP_UA_COLOR Palette dei colori del monitor
HTTP_UA_OS Sistema Operativo del browser dell'utente
HTTP_ACCEPT_LANGUAGE Lingua accettata dal browser
DATE_LOCAL Data corrente nella fascia oraria locale
REMOTE_ADDR IP del client.
ALL_HTTP Tutte le variabili HTTP_*
Dell'oggetto Response abbiamo esaminato solo il metodo Write,
quindi è d'obbligo una panoramica su alcuni degli altri metodi:
Response.AppendToLog questo metodo aggiunge una stringa di non più
di 80 caratteri al file di log di IIS.
Response.BinaryWrite questo metodo permette di visualizzare dei
file binari (es. le immagini)
Response.End interrompe l'elaborazione ASP in corso.
Response.Redirect serve per inviare i clients ad un altro
URL.
Il
mondo degli ASP è sconfinato e qui noi cerchiamo di analizzare i mezzi di
più immediato utilizzo e comprensione e con questa nobile missione nel
cuore, vi lascio con uno degli strumenti più richiesti ed usati il
web-counter degli accessi al vostro sito.
Alla prossima puntata !
Inserite questo pezzo di codice dove volete nella vostra pagina
html, stando attenti a rinominarla *.asp ed il gioco è fatto
!
ATTENZIONE: per far funzionare questo procuratevi il file
pagecnt dalla mia home page.
Counter:
Rem PageCount diventa un'istanza dell'oggetto
IISSample.PageCounter che si occupa di
Rem contare gli hits alla pagina
<%Set
PageCount=Server.CreateObject("IISSample.PageCounter")
Rem la variabile Hits prende il valore di
PageCount
Hits=PageCount.Hits%>
Rem il tag <%= visualizza il contenuto della
variabile Hits.
<%=Hits%>
Clicca qui per
la libreria del contatore
Clicca qui per
la libreria del aspmail