|
In questa lezione
: 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.
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
|