Perizie Informatiche
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 digitfor@gmail.com
APS…QUESTI SCONOSCIUTI
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 "digitfor@gmail.com"
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 !
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