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 la modifica, il mio collega di quelle per l’inserimento e la cancellazione.
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 due form 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 dai 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 i due
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 i due 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
sesisone. 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 modifica dei dati riguardanti
circolari già presenti nel database.
Fig.3 – Errore.asp
4.3 – Modifica
L’operazione di modifica dà la possibilità di cambiare uno o più dati relativi ad una circolare
precedentemente inserita. Per fare questo ho creato 4 pagine.
4.3.1 – modifica.asp
In questa pagina (Fig. 4) 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
(“modifica2.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 modificarla;
in ogni riga compare un pulsante “modifica”, che porta alla pagina di modifica vera e propria. 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
“modificaDati.asp”. Inoltre viene salvata una variabile “tabella” in oggetto “Session” che contiene il
nome della tabella sulla quale si vuole operare.
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. 4 – modifica.asp
4.3.2 – modCerca.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.3.3 – modificaDati.asp
Questa è la pagina di modifica vera e propria (Fig. 5), vengono infatti visualizzati 5 campi contenuti
all’interno di un form, che contengono come valori di default i dati, relativi alla circolare scelta, già
presenti nel database.
L’utente può quindi modificarne uno o più e cliccare sul pulsante per effettuare la modifica; prima
di reindirizzare l’utente alla pagina di aggiornamento del database il sistema chiede conferma
tramite uno script.
Ho inoltre previsto un controllo tramite funzioni JAVASCRIPT, per essere certi che tutti i campi
siano stati compilati e che il formato di anno e numero sia valido.
Fig. 5 – modificaDati.asp
4.3.4 – modificaEff.asp
Questa pagina preleva tutti i valori contenuti nel form della pagina “modificaDati.asp” e dopo aver
cancellato il record esistente relativo alla circolare da modificare ne crea uno nuovo con i dati
modificati.
Per ottenere questo risultato è stato necessario memorizzare i vecchi valori di anno e numero
all’interno di una sessione; questa operazione ha una doppia utilità: da una parte serve per trovare
con un’interrogazione al database il record da modificare, dall’altra per controllare che sia rispettata
l’univocità della coppia anno-numero, chiave primaria della tabella; i valori di anno e numero da
inserire nel database devono essere o del tutto nuovi o gli stessi che erano contenuti in precedenza
nel record che si sta modificando. A questo scopo vengono quindi aperti due recordset relativi alla
tabella scelta, il cui nome è stato precedentemente memorizzato nella sessione; in uno dei due come
detto viene caricato il record da modificare, nell’altro viene cercato un record che abbia i valori di
anno e numero uguali a quelli appena inseriti, l’operazione di modifica viene quindi completata se
questo secondo recordset è vuoto oppure se viene trovata come unica circolare quella che si è deciso
di modificare.