Relazione Attività di Tirocinio
1 - Introduzione
Nell’ambito dell’attività di tirocinio svolta presso l’Assessorato Bilancio e Finanze, ci è stato
richiesto di realizzare delle pagine Web dinamiche da pubblicare sul sito della Regione Sicilia, che
servissero ad interfacciare un database di circolari amministrative.
Entrando più nel dettaglio il sistema da noi realizzato consente, dopo l’autenticazione dell’utente
tramite l’inserimento di username e password, di inserire nel database dati concernenti una nuova
circolare, modificare un record esistente o cancellarlo del tutto.
Per far questo ci siamo serviti della tecnologia delle Active Server Pages (ASP), particolarmente
indicata per le interazioni on-line con i database.
2 - Active Server Pages
In principio il Web era una semplice collezione di pagine HTML statiche collegate tra di loro
tramite link ipertestuali. Lo scopo principale era quello di rendere disponibile su Internet documenti
correlati come in un enorme ipertesto. La necessità di una maggiore interattività tra l’utente e il
server Web, nata soprattutto nel momento in cui grandi aziende hanno visto nella rete delle reti, un
nuovo veicolo commerciale, ha indirizzato gli sforzi nello sviluppo di strumenti per rendere il Web
sempre più "dinamico". Un classico esempio è dato dai motori di ricerca: l’utente inserisce in una
form una parola chiave e invia al server la richiesta restando in attesa di una risposta in tempo reale.
Dalla parte del server viene a questo punto attivata una procedura in grado di interrogare un
database e di generare una pagina HTML con la lista dei link richiesti. Per fare questo, insieme ad
altri linguaggi, fu sviluppato il linguaggio ASP, che consente di sfruttare a pieno le risorse presenti
sul server per la creazione di pagine Web.
Fig.1 – Active Server Pages
L’utilizzo per cui era stata progettata la tecnologia ASP, era originariamente quello di interfacciare
il browser con un database, ma basandosi sul modello COM (Component Object Model), ASP è in
grado di interagire con le applicazioni che seguono questo standard e riportare i risultati di questa
interazione sotto forma di pagine Web. Ad esempio la richiesta di un utente di visualizzare una
tabella si traduce in una richiesta da parte di ASP verso il database di accedere alla tabella in
questione, rappresentarla internamente tramite un oggetto ADO e tradurre il contenuto della tabella
in una serie di tag HTML. La possibilità di interagire con database ODBC compatibili, pone ASP
come uno dei mezzi più efficaci per la realizzazione di applicazioni distribuite indipendentemente
dal database utilizzato.
3 - Il Progetto
Dopo aver analizzato le richieste abbiamo progettato quale doveva essere la struttura del nostro
sistema, dapprima definendo una struttura per il database tale da ottimizzarne l’accessibilità, e in
seguito creando uno schema ad albero che illustrasse i collegamenti tra le varie pagine.
3.1 – Il database
Il database è in formato Access, ed è composto da 3 tabelle.
La prima è costituita da due campi e contiene gli username e le password degli utenti autorizzati
all’accesso. Le altre due hanno la stessa struttura, con 5 campi: l’anno di emissione e il numero, che
insieme costituiscono la chiave primaria, il titolo della circolare, una breve descrizione e l’indirizzo
dove è possibile leggere per intero la circolare in formato PDF; esse contengono, l’una le circolari
del Dipartimento Bilancio e Tesoro, l’altra quelle del Dipartimento Finanze e Credito.
3.2 – La struttura ad albero
La struttura delle pagine (Fig.2) prevede una pagina iniziale in cui autenticarsi, che permette
l’accesso ad una pagina di scelta, in cui è possibile decidere quale operazione si vuole effettuare, tra
inserimento, cancellazione e modifica. Al termine delle operazioni è opportuno effettuare il logout
per uscire dall’area riservata.
Login.html
Login.asp
Sessione
Scelta.asp
Inserisci.asp
Cancella.asp
Modifica.asp
ModCerca.asp
Inserimento.asp
CanCerca.asp
Elimina.asp
ModificaDati.asp
ModificaEff.asp
Logout.asp
Fig.2 - Struttura ad albero
Per lo sviluppo vero e proprio delle pagine il lavoro è stato suddiviso: io mi sono occupato della
creazione delle pagine per l’inserimento e la cancellazione, il mio collega di quelle per la modifica.
4 – Funzionamento delle pagine
4.1 – Login
La pagina di login è la prima che si presenta all’utente che vuole interagire con il database.
4.1.1 –login.html
Questa è una semplice pagina HTML che contiene un form con due tag input nei quali l’utente che
si vuole autenticare deve inserire il proprio username e la password.
4.1.2 – login.asp
Questa pagina ASP preleva i dati dal form della pagina precedente assegnando il loro valore a delle
variabili. Per controllare se l’username e la password inseriti sono corretti, l’applicazione apre una
connessione con il database (“Database Circolari.mdb”) ed in particolare con la tabella “UserPw” e
per ogni record confronta le due variabili con i valori dei campi del database cercando il record in
cui sia l’username sia la password corrispondano con quelli inseriti dall’utente.
Se non viene trovato il record cercato viene visualizzato un messaggio di errore e nuovamente il
form per consentire il reinserimento.
Se invece viene trovato il record, per prima cosa viene aperta una sessione contente i valori di
UserName e Password, che rimarrà aperta fino all’operazione di logout; da questo momento in poi
all’apertura di ogni pagina dell’area riservata verrà controllato che le variabili della sessione siano
state inizializzate, per assicurarsi che solo attraverso la pagina di login è possibile accedere alle
pagine riservate.
4.1.3 – errore.asp
Questa pagina (Fig.3) viene visualizzata soltanto nel caso in cui, conoscendo l’URL di una delle
pagine riservate, si tenti di accedervi senza effettuare il login; se al momento del controllo le
variabili della sessione non risultano inizializzate, viene eseguito un reindirizzamento verso questa
pagina che contiene un messaggio di errore e il form.
4.1.4 – logout.asp
In questa pagina, alla quale si può accedere cliccando sul pulsante Logout presente in ognuna delle
pagine dell’area riservata, viene effettuata l’operazione “Session.abandon” con la quale si termina la
sessione. La pagina contiene anche un pulsante per tornare alla pagina di login.
4.2 – Scelta
Da questa pagina è possibile accedere alle tre diverse funzioni del sistema; è infatti presente un
pulsante per accedere all’area in cui è possibile inserire nuovi dati, uno per l’area di modifica e uno
per l’area di cancellazione.
Io mi sono occupato dello sviluppo delle pagine relative alla parte di inserimento di dati riguardanti
nuove circolari, e della parte di cancellazione di record dal database.
Fig.3 – Errore.asp
4.3 – Inserimento
Per l’inserimento di dati relativi a nuove circolari ho creato due pagine ASP, “inserisci.asp” e
“inserimento.asp”.
4.3.1 – inserisci.asp
In questa pagina è presente un form con 6 tag; i primi 5, anno, numero, titolo, descrizione e link,
sono di tipo “input” e sono relativi ai campi del database, mentre il sesto è un menù a tendina (tipo
“select”) che serve per scegliere in quale delle due tabelle (Dipartimento Bilancio e Tesoro,
Dipartimento Finanze e Credito) inserire i dati.
Ho utilizzato degli script in linguaggio JAVASCRIPT, per controllare che i dati passati al database
siano in un formato valido (Fig. 4) e che tutti i campi siano stati compilati; inoltre ho anche previsto
uno script di conferma per l’inserimento.
4.3.2 – inserimento.asp
In questa pagina dapprima vengono prelevati i valori contenuti nel form della pagina
“inserisci.asp”; a questo punto viene creata la connessione con il database; poi vengono aperti due
recordset relativi alla tabella scelta tramite il menù a tendina; uno viene aperto per controllare che
nella tabella non sia già presente un record con la stessa chiave primaria (anno e numero), l’altro al
quale verrà aggiunto il nuovo record nel caso in cui il controllo abbia avuto esito negativo.
La pagina visualizzerà un messaggio di successo o di errore a seconda dell’esito dell’inserimento.
Fig. 4 – inserisci.asp con script
4.4 – Cancellazione
Per la fase di cancellazione ho previsto tre pagine, una che visualizza le circolari dell’anno in corso,
una per la ricerca di circolari da cancellare, e un’altra per l’eliminazione vera e propria.
4.4.1 – cancella.asp
In questa pagina (Fig. 5) vengono visualizzate in una tabella le circolari dell’anno in corso del
Dipartimento Bilancio e Tesoro; in alto è presente un link ad una sua pagina gemella
(“cancella2.asp”) che si riferisce all’altra tabella del database contenente le circolari del
Dipartimento Finanze e Credito. Per ogni circolare sono elencati l’anno, il numero e il titolo, che è
anche un link alla circolare stessa in formato PDF per chi volesse consultarla prima di cancellarla;
in ogni riga compare un pulsante “cancella”, che porta alla pagina di eliminazione per cancellare la
circolare dopo aver chiesto conferma all’utente tramite uno script. E’ importante notare che i valori
di anno e numero visualizzati all’interno della tabella sono contenuti anche all’interno di due tag
input di tipo “hidden” in un form i cui valori saranno passati alla pagina “elimina.asp”.
In questa pagina è inoltre possibile effettuare una ricerca tra tutte le circolari, grazie ad una sorta di
motore di ricerca che ho posizionato sotto la tabella; è possibile ricercare le circolari o per anno o
per numero o per parola chiave. Il motore di ricerca non è altro che un form composto da due tag
“select” per l’anno e il numero e da un tag “input” per inserire la parola chiave; i due menù a
tendina interagiscono tra di loro dinamicamente; infatti, quando si sceglie un anno dal primo menù a
tendina, viene chiamata una funzione JAVASCRIPT, che richiamando la stessa pagina ASP con il
valore dell’anno scelto, fa sì che nel secondo menù a tendina compaiano come possibili numeri da
scegliere solo quelli delle circolari di quell’anno; lo stesso avviene scegliendo prima un numero.
Fig. 5 – cancella.asp
4.4.2 – canCerca.asp
In questa pagina vengono prelevati i valori del form del motore di ricerca, e viene interrogato il
database secondo i dati inseriti. La ricerca funziona anche nel caso in cui non vengano compilati
tutti i campi di ricerca; infatti, in questo caso, il motore di ricerca prenderà tutti i possibili valori del
campo non compilato. Per quanto riguarda la ricerca per parola chiave verranno visualizzate tutte
quelle circolari che contengono in un qualsiasi punto o del titolo o della descrizione la parola o le
parole inserite.
Viene visualizzato un messaggio che informa l’utente circa il numero di circolari trovate e una
tabella dello stesso tipo di quella della pagina precedente contenente le informazioni relative alle
circolari trovate.
4.4.3 – elimina.asp
I dati contenuti nei tag di tipo “hidden” del form della tabella di visualizzazione delle circolari
vengono prelevati per effettuare l’interrogazione che restituisce un unico record relativo alla
circolare scelta, che viene cancellato.
Viene visualizzato un messaggio di avvenuta cancellazione e dei pulsanti per scegliere se effettuare
una nuova cancellazione o un’altra operazione tornando alla pagina di scelta.