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


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 "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 !


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

 

I lezione II lezione III lezione IV lezione V lezione VI lezione
             
indietro
avanti