Parte seconda
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%>