3. PROGETTAZIONE DEL SERVIZIO ANAGRAFE ON-LINE 11 4. REALIZZAZIONE DEL SERVIZIO ANAGRAFE ON-LINE 21



Documenti analoghi
Corso di PHP. Prerequisiti. 1 - Introduzione

Il database management system Access

1. BASI DI DATI: GENERALITÀ

Database. Si ringrazia Marco Bertini per le slides

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

MANUALE DI UTILIZZO: INTRANET PROVINCIA DI POTENZA

EXPLOit Content Management Data Base per documenti SGML/XML

Regione Piemonte Portale Rilevazioni Crediti EELL Manuale Utente

Corso di Access. Prerequisiti. Modulo L2A (Access) 1.1 Concetti di base. Utilizzo elementare del computer Concetti fondamentali di basi di dati

Organizzazione degli archivi

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

NOVITÀ SITI COMMERCIALISTA

PSNET UC RUPAR PIEMONTE MANUALE OPERATIVO

lem logic enterprise manager

Introduzione Ai Data Bases. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi 132 Sesto San giovanni

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Sistemi Informativi e Basi di Dati

Guida alla registrazione on-line di un DataLogger

A T I C _W E B G U I D A AL L A N A V I G A Z I O N E S U L S I T O D E L G R U P P O. Rev. 2.1

ISTRUZIONI PER LA GESTIONE BUDGET

CONTENT MANAGEMENT SYSTEM

Organizzazione delle informazioni: Database

Database e reti. Piero Gallo Pasquale Sirsi

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

Base di dati e sistemi informativi

Manuale Utente Albo Pretorio GA

MANUALE D'USO DEL PROGRAMMA IMMOBIPHONE

I database relazionali (Access)

Banca dati Professioniste in rete per le P.A. Guida all uso per le Professioniste

SDD System design document

CONTENT MANAGEMENT SY STEM

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

Uso delle basi di dati DBMS. Cos è un database. DataBase. Esempi di database

19. LA PROGRAMMAZIONE LATO SERVER

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

uadro Soluzioni software per L archiviazione elettronica dei documenti Gestione Aziendale Fa quadrato attorno alla tua azienda

Software di sistema e software applicativo. I programmi che fanno funzionare il computer e quelli che gli permettono di svolgere attività specifiche

Cosa è un foglio elettronico

Lezione 1. Introduzione e Modellazione Concettuale

CORSO ACCESS PARTE II. Esistono diversi tipi di aiuto forniti con Access, generalmente accessibili tramite la barra dei menu (?)

Progetto ittorario Anno scol

Database 1 biblioteca universitaria. Testo del quesito

Riconoscibilità dei siti pubblici: i domini della Pa e le regole di.gov.it

Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

Progettazione Web Applicazioni client-server

Capitolo 3 Guida operativa del programma TQ Sistema

Portale tirocini. Manuale utente Per la gestione del Progetto Formativo

Basi di Dati e Microsoft Access

Strumenti di modellazione. Gabriella Trucco

Sito web parrocchiale: STRUMENTI E PROGRAMMI

Dipartimento per le Libertà Civili e l Immigrazione

Introduzione alle basi di dati. Gestione delle informazioni. Gestione delle informazioni. Sistema informatico

GESGOLF SMS ONLINE. Manuale per l utente

SOLUZIONE Web.Orders online

Gestione Risorse Umane Web

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Scuola Digitale. Manuale utente. Copyright 2014, Axios Italia

I.N.A.I.L. Certificati Medici via Internet. Manuale utente

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Capitolo 4 Pianificazione e Sviluppo di Web Part

Access. P a r t e p r i m a

FPf per Windows 3.1. Guida all uso

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Dipartimento per le Libertà Civili e l Immigrazione

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Progettazione di una base di dati Ufficio della Motorizzazione

BASE DI DATI: introduzione. Informatica 5BSA Febbraio 2015

Guida rapida all uso di Moodle per gli studenti

ALICE AMMINISTRAZIONE UTENTI WEB

esales Forza Ordini per Abbigliamento

Dispensa di Informatica I.1

In questo manuale sono indicate le procedure per utilizzare correttamente la gestione delle offerte dei fornitori.

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

TFR On Line PREMESSA

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

PROTOS GESTIONE DELLA CORRISPONDENZA AZIENDALE IN AMBIENTE INTRANET. Open System s.r.l.

Corso di PHP. Prerequisiti. 1 - Introduzione

I database. Cosa sono e a cosa servono i Database

Comuninrete sistema integrato per la gestione di siti web ed interscambio di informazioni e servizi.

Guida di addestramento Introduzione alle Comunicazioni Obbligatorie [COB] SINTESI

INFORMATICA PER LE APPLICAZIONI ECONOMICHE PROF.SSA BICE CAVALLO

InfiXor. il programma facile e versatile per preventivi veloci e completi. il software di preventivazione per produttori e rivenditori di infissi

Progettaz. e sviluppo Data Base

Magazzino Virtuale Clienti

Archivi e database. Prof. Michele Batocchi A.S. 2013/2014

Software per Helpdesk

INDICAZIONI GENERALI

NAVIGAORA HOTSPOT. Manuale utente per la configurazione

SIFORM MANUALE VOUCHER FORMATIVI A DOMANDA AZIENDALE

MICHELANGELO Piattaforma autorizzativa per la gestione di interventi riservata ai fornitori

SOFTWARE PER LA RILEVAZIONE DEI TEMPI PER CENTRI DI COSTO

ARCHIVI E DATABASE (prof. Ivaldi Giuliano)

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

Servizio on-line di Analisi e Refertazione Elettrocardiografica

Progetto: ARPA Fonte Dati. ARPA Fonte Dati. Regione Toscana. Manuale Amministratore

Il modello veneto di Bilancio Sociale Avis

Ti consente di ricevere velocemente tutte le informazioni inviate dal personale, in maniera assolutamente puntuale, controllata ed organizzata.

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Transcript:

INDICE 1. INTRODUZIONE 3 2. PRESENTAZIONE DEL SERVIZIO ANAGRAFE ON-LINE 7 2.1. La precedente applicazione 7 2.2. Specifiche e requisiti del servizio 8 3. PROGETTAZIONE DEL SERVIZIO ANAGRAFE ON-LINE 11 3.1 Il progetto logico della base di dati 11 3.2. Tipologie di utenti 14 3.3. Flussi di conversazione 15 3.4. Architettura 18 3.5. Layout delle pagine 19 4. REALIZZAZIONE DEL SERVIZIO ANAGRAFE ON-LINE 21 4.1. Tecnologia utilizzata 21 4.1.1. Internet e HTML 21 4.1.2. PHP 22 4.1.3. JAVASCRIPT 24 4.1.4. CSS 25 4.1.5. MS SQL SERVER 25 4.1.6. APACHE 27 4.2. Database 27 4.2.1. Viste 29 4.2.2. Tabelle 35 4.2.3. Connessione al database 38 4.3. Accessi 40 4.3.1. Login utenti comunali 41 4.3.2. Login enti esterni 42 4.4. Il sito Web 43 4.5. Stampe formattate 52 4.6. Usabilità e accessibilità 54 4.7. Collaudo 56 5. CONCLUSIONI 59 A. APPENDICE 61 a. Legge n.4 del 9 Gennaio 2004 Legge Stanca 61 RIFERIMENTI BIBLIOGRAFICI 67 1

2

CAPITOLO 1 Introduzione 1. INTRODUZIONE Internet negli ultimi anni ha subito un forte sviluppo, sia in campo tecnologico che nell ambito dei servizi offerti. La rete che siamo abituati a utilizzare quotidianamente si presenta con un aspetto certamente diverso rispetto alla nascita: inizialmente adibito a mezzo di divulgazione scientifica e costituito da semplici browser di testo statici, oggi Internet è il centro dell attività dell informazione dinamica. Considerando la facilità e le molteplici possibilità di accesso alla rete per le più svariate categorie di utenti, è evidente come i servizi sviluppati possano essere sia prettamente commerciali, sia personali (vedi la massiva diffusione dei blog), sia al servizio del pubblico. Le amministrazioni pubbliche hanno sfruttato questa crescita di Internet mediante la creazione di portali Web, punto di incontro con il cittadino, facilitando così l accesso e la fruizione di particolari servizi, attraverso l utilizzo del solo computer. Si è quindi ottenuto il duplice effetto di migliorare la qualità, in termini di semplicità e tempo necessario per reperire informazioni, e quello di diminuire alcune spese. Questo uso ne ha permesso una veloce e vasta diffusione, con la necessità di non discriminare l accesso ad alcuna persona: l accessibilità assume quindi una notevole importanza nella creazione dei servizi, al punto che è salvaguardata da un apposita Legge, la Legge Stanca. In questo contesto si inserisce lo sviluppo del nuovo servizio di Anagrafe on-line, un applicazione Web utile per la consultazione dell anagrafe del Comune di Cento: già esistente nel passato, è stato completamente riprogettato per l esigenza di implementare nuove funzionalità. Con questo servizio viene data la possibilità di conoscere i dati anagrafici (nascita, residenza, codice fiscale, carta d identità ) di ogni singolo cittadino residente nel Comune, il cui utilizzo è indirizzato a tre tipologie di utenti: i dipendenti comunali, particolari enti pubblici e gli amministratori di sistema. Le prime due categorie di utenti hanno la possibilità di consultare i dati anagrafici attraverso differenti metodi di ricerca, mentre gli amministratori hanno in più il compito di gestire gli utenti abilitati a tale servizio, dando o togliendo la possibilità di accesso. 3

CAPITOLO 1 Introduzione Il progetto che ha reso possibile la creazione del nuovo servizio, si è sviluppato in molteplici fasi, prima fra tutte l analisi del precedente servizio Web. Da qui, si è proceduto a ricercare le informazioni necessarie a definire gli aspetti e le caratteristiche delle quali avrebbe dovuto disporre. Per questo sono state indispensabili delle interrogazioni ai committenti, in modo da capire con estrema chiarezza le funzionalità del servizio. In base all analisi delle informazioni ottenute, si è passati alla fase di progettazione, nella quale sono state definite le strutture dei dati utili per il servizio e le differenti tipologie di utenti che avrebbero dovuto accedere, creando due modalità di accesso: quella di dominio, riservata agli utenti comunali e agli amministratori, e quella pubblica, per enti pubblici esterni. Per differenziare i privilegi degli utenti, sono stati creati tre diversi livelli: un livello base (possibilità di ricercare per nome e cognome e per codice fiscale), un livello avanzato (possibilità di effettuare anche una ricerca per numero della carta d identità) e un livello amministratore (oltre agli altri privilegi, si occupa della gestione degli utenti). A seguire, particolari attenzioni sono state date alla creazione di un appropriata interfaccia Web con la quale il servizio si presenta all utilizzatore, nel rispetto delle norme di accessibilità e usabilità previste per la pubblica amministrazione Infine il progetto è stato realizzato e calibrato in base alle seguenti considerazioni sulle architetture hardware e software: ridotte richieste di risorse hardware hanno portato a far uso della struttura preesistente composta da server,mentre, per la programmazione, sono state utilizzate tecnologie sia sviluppate in un ambito libero o Open Source (PHP e Server Apache), sia proprietarie, in particolar modo legate al mondo Microsoft (SQL Server). La realizzazione ha comportato la gestione di database dell anagrafe preesistenti e dislocati su più sistemi, unificandoli e attestandoli su un singolo server, la creazione di procedure di autenticazione e la produzione delle pagine Web. Il servizio è stato poi sottoposto a un collaudo sia per un accurata fase di debug, sia per verificare la scalabilità dell applicazione, dati i numerosi accessi contemporanei che il servizio comunale può avere. Questo progetto è stato sviluppato nell ambito di un tirocinio, presso il Servizio Sistemi Informativi (SSI) del Comune di Cento, una possibilità che viene data a laureandi 4

CAPITOLO 1 Introduzione del corso di laurea di Informatica, grazie a una stretta cooperazione, consolidata ormai da anni, tra la facoltà di Ingegneria dell Università di Ferrara e lo stesso Comune di Cento. 5

6

CAPITOLO 2 Presentazione del servizio Anagrafe on-line 2. PRESENTAZIONE DEL SERVIZIO ANAGRAFE ON-LINE Il servizio Anagrafe on-line è realizzato a partire da un applicazione Web preesistente. In questo capitolo vengono discusse le soluzioni adottate per cercare di creare un nuovo servizio, che possa al tempo stesso risolvere i difetti dell applicazione precedente e soddisfare i nuovi requisiti. Punto di partenza per la creazione del nuovo servizio è stata quindi la raccolta delle specifiche di progetto: in questa fase sono necessarie interviste ai committenti, in modo da ottenere un quadro ampio e chiaro su ciò che si intende sviluppare per non rischiare di progettare un servizio inefficiente o fornire soluzioni non richieste. 2.1. La precedente applicazione La necessità di gestire quotidianamente in velocità e in sicurezza le informazioni anagrafiche del cittadino ha portato il Comune di Cento a informatizzare il servizio dell anagrafe. Con l avvento di Internet, il Comune di Cento ha provveduto a creare un proprio portale Web, sul quale è stata portata l applicazione anagrafe, secondo una struttura client-server: i dati risiedevano su server sempre on-line, con il fine di essere disponibili ai client che ne effettuavano richiesta. È stato così creato un servizio applicativo Web per dare la possibilità a enti pubblici di soddisfare il bisogno di reperire i dati anagrafici dei cittadini, al quale potevano accedere solo gli utenti autorizzati, attraverso una procedura di autenticazione. Inizialmente a ogni singolo ente era stata fornita una coppia username/password, procedura successivamente modificata fornendo lo stesso username a tutti gli utenti appartenenti a uno stesso ente e differenziandoli in base alla password. Le funzionalità erano limitate alla ricerca per cognome/nome o per codice fiscale, con i risultati ordinabili in base al tipo: per nome, per cognome, per data di nascita e così via. Tuttavia, a fronte anche di un notevole numero di entry ottenute dalla ricerca, queste venivano visualizzate in pagine contenente ognuna al massimo venti nominativi, con la possibilità di analizzare in dettaglio i vari dati del singolo. 7

CAPITOLO 2 Presentazione del servizio Anagrafe on-line Le ricerche effettuate si appoggiavano allo stesso database utilizzato dal software gestionale, con ovvia attenzione alla riservatezza dei dati sensibili della persona: l applicazione difatti doveva fornirne in output solo una parte, mantenendone altri non visibili per ragioni di riservatezza. Gli utenti che potevano averne accesso venivano invece registrati in un database distinto, residente su disco rigido. Questa applicazione Web presentava numerosi difetti, primo fra tutti l utilizzo obbligatorio di più database, problema di elevata importanza in quanto utilizzando un unico database si ha la possibilità di accedere a tutte le informazioni di cui si ha bisogno effettuando una singola connessione, con una ridotta necessità di tracciamento degli accessi a ulteriori database. Analizzando il servizio Web esistente, si è notato che non avveniva una differenziazione degli utenti al momento dell autenticazione, dato che venivano sottoposti tutti alla stessa procedura. Le precedenti modalità di ricerca presentavano, inoltre, delle mancanze: possibilità di inserire, nei campi di ricerca, caratteri speciali come %, $, & inutili alla ricerca stessa; assenza di un controllo, in certe ricerche, di vincoli sul numero minimo e massimo di caratteri da inserire; utilizzo di più pagine per la visualizzazione dei risultati delle ricerche, da evitare per l utilizzo dei backbutton, in quanto rappresentano una forma non corretta di programmazione. 2.2. Specifiche e requisiti del servizio Per ovviare ai difetti e integrare le mancanze della precedente applicazione Web, è stato così deciso di provvedere alla realizzazione di una nuova Anagrafe on-line. I componenti del Servizio Sistemi Informativi (SSI) del Comune di Cento, che si occupa di amministrare la struttura hardware e software della intranet comunale, hanno fornito utili 8

CAPITOLO 2 Presentazione del servizio Anagrafe on-line indicazioni per comprendere le nuove funzionalità da implementare e l aspetto del nuovo servizio. Il nuovo servizio Web Anagrafe on-line deve utilizzare piattaforme hardware e software esistenti, in particolare il database preesistente, sia per prelevare le informazioni delle persone, sia per integrarlo con la lista degli utenti che possono accedere al servizio e con la storia degli accessi effettuati. Dalle interviste fatte è sorta l esigenza di fornire al servizio due distinti ambienti di accesso: quello privato, utilizzato dai dipendenti comunali e quello pubblico, utilizzato dagli enti esterni. Analizzando prima l ambito pubblico, le caratteristiche da soddisfare sono: il riconoscimento del profilo dell utente a seguito di una procedura di autenticazione; la possibilità di usufruire di criteri di ricerca per reperire le informazioni anagrafiche di un cittadino. È inoltre stata inserita la possibilità di effettuare interrogazioni per numero di carta d identità; la possibilità di visualizzare maggiori dettagli (personali e familiari) della persona cercata; la possibilità di effettuare delle stampe con un formato specifico, nel rispetto della diffusione dei dati per quanto riguarda la privacy; la possibilità di cambiare la password per un utente che non ha più diritto di accedere al servizio a seguito di un periodo di inutilizzo dell applicazione. Per quanto riguarda l ambito privato, le caratteristiche assumono un grado maggiore di elaborazione, in quanto si deve distinguere se l utente comunale è amministratore o no. Queste due tipologie di utenti hanno in comune le prime quattro caratteristiche dell ambiente pubblico, a differenza della procedura di autenticazione. Un dipendente comunale per accedere alla rete locale dalla propria postazione, effettua in Windows un autenticazione e dato che il servizio è accessibile dal portale Web, l utente deve essere riconosciuto automaticamente, senza la necessità di richiedere una nuova identificazione. 9

CAPITOLO 2 Presentazione del servizio Anagrafe on-line In aggiunta il profilo amministratore deve avere le seguenti peculiarità: possibilità di inserire nuovi utenti (dipendente comunale o un ente pubblico) accedendo al solo servizio Web per evitare di agire direttamente sul database. Con la gestione è possibile disattivare e riattivare utenti senza cancellarli dal database, ma solo cambiandone la validità. Inoltre deve esser possibile classificarli in base a privilegi con conseguente accesso o meno a particolari aree; registrare e visualizzare gli accessi effettuati, con particolare attenzione agli utenti con password a scadenza dopo un certo numero di giorni di mancato utilizzo del servizio (controllo effettuato solo per gli enti pubblici esterni). Agli amministratori è affidato il compito di occuparsi della categoria principale del servizio: le persone registrate all anagrafe. Il servizio ha il compito di fornire informazioni dettagliate di ogni singolo cittadino e per reperirle è necessario concatenare tra loro differenti tabelle del database. Si deve prestare attenzione inoltre allo stato attuale della persona: se questa non risiede più nel Comune si dovrà specificare se si tratta di un emigrazione presso un Comune italiano o estero, o se la persona è deceduta è inutile fornire informazioni sulla residenza precedente. Bisogna quindi rendere visibili solamente i dati che si ritengono veramente utili e mantenere gli altri nascosti agli utenti. Ulteriore specifica riguarda i dati relativi alla carta d identità associata a una persona che devono essere resi visibili solamente agli utenti che presentano particolari privilegi. Per rendere più facile la consultazione dell utente, si è poi considerata la possibilità di mettere in stretta correlazione le persone con il proprio nucleo familiare. Essendo un servizio accessibile dal portale Web del Comune di Cento, deve presentarsi con un interfaccia grafica molto simile a quella del portale stesso, standardizzazione molto importante da rispettare. Inoltre un altro aspetto da realizzare per l interfaccia grafica è la separazione tra il contenuto e la presentazione. 10

CAPITOLO 3 Progettazione del servizio Anagrafe on-line 3. PROGETTAZIONE DEL SERVIZIO ANAGRAFE ON-LINE La raccolta delle specifiche ha fornito le informazioni di partenza per la fase di progettazione del servizio Anagrafe on-line. Innanzitutto sono state individuate le entità logiche trattate e le associazioni che le legano, continuando con lo studio delle conversazioni utilizzate per mettere in relazione le varie entità. Inoltre è stata curata la realizzazione del servizio con la dovuta attenzione alle architetture hardware e software a disposizione. Infine si è stabilita la struttura di layout che le pagine devono rispettare. 3.1 Il progetto logico della base di dati Nella creazione di un servizio, il livello più basso che si può incontrare è legato ai dati e al database. Un database può essere definito come un contenitore di dati organizzati in accordo a un preciso modello di dati [3]. Quello che qui viene preso in considerazione è il modello Entity-Relationship (ER) le cui parti fondamentali, come indica la sigla, sono le entità e le relazioni. Un entità è una qualsiasi cosa concreta o astratta distinguibile dalle altre. È composta da attributi, caratterizzati da nome e tipo, i quali possono essere di diverso tipo: semplice, composto, unione. Per identificare una particolare entità si utilizzano le chiavi, che sono un insieme di uno o più attributi. Una relazione è un associazione che lega differenti entità e ne esistono di quattro tipi: - uno-a-uno (1:1), un entità di tipo A può essere in relazione con una sola entità di tipo B ed un entità di tipo B, può essere in relazione con una sola entità di tipo A; - uno-a-molti (1:n), un entità di tipo A può essere in relazione con più entità di tipo B ma un entità di tipo B, può essere in relazione con una sola entità di tipo A; - molti-a-molti (n:m) un entità di tipo A può essere in relazione con più entità di tipo B ed un entità B, può essere in relazione con più entità di tipo A; 11

CAPITOLO 3 Progettazione del servizio Anagrafe on-line - parziale, un entità di tipo A può non essere in relazione con una o più entità di tipo B. Nello specificare quali sono le entità di questo progetto e come si relazionano tra di loro, si considerano le persone registrate all anagrafe nell entità PERSONA. Gli attributi che contraddistinguono questa entità sono i dati personali quali, ad esempio, nome, cognome e data di nascita. In più esistono tre campi che diventano fondamentali nel ricavare i dati di una persona e nel metterla in relazione con le altre entità. Il primo indica se la persona è in vita, il secondo precisa se la persona attualmente risiede presso il Comune di Cento e il terzo è riferito alle persone iscritte all Associazione Italiani Residenti all Estero (A.I.R.E.). L entità PERSONA può essere in relazione con le seguenti altre entità (vedi Figura 1): - COMUNE, per descrivere il comune di residenza, non necessariamente Cento, perché nel caso di cambio di residenza, viene riportato il Comune dove la persona si trasferisce. Questa associazione è del tipo 1:1; - VIA, per descrivere la residenza (località, indirizzo e numero civico). Questi dati devono essere disponibili solo se la persona risiede attualmente nel Comune di Cento. Questa associazione è del tipo 1:1, ma è di tipo parziale nel caso di persone emigrate, decedute o residenti all estero; - CODICE FISCALE, per descrivere i dati relativi al proprio C.F.. Questa associazione è del tipo 1:1; - CARTA D IDENTITÀ, per descrivere i dati relativi alla propria C.I.. Questa associazione è del tipo 1:N, dato che questo documento presenta una data di scadenza, ed è di tipo parziale perché le persone sotto i 14 anni non hanno diritto ad averla; - MORTE, per descrivere i dati relativi al decesso. Questa associazione è del tipo 1:1, ma è di tipo parziale; - EMIGRAZIONE, per descrivere i dati relativi al cambio di residenza presso un altro comune italiano. Questa associazione è del tipo 1:1, ma è di tipo parziale; - AIRE, per descrivere i dati relativi al cambio di residenza presso un comune estero. Questa associazione è del tipo 1:1, ma è di tipo parziale; 12

CAPITOLO 3 Progettazione del servizio Anagrafe on-line - NUCLEO, per descrivere i dati relativi al nucleo familiare al quale la persona fa parte. Questa associazione è del tipo N:1. Oltre alle entità appena descritte, sono da aggiungere le entità PROVINCIA e STATO, entrambe associate all entità COMUNE con relazioni N:1, come riportato in Figura 2. Queste sono le entità che servono per gestire i dati dell anagrafe che bisognerà visualizzare, ad esempio, dopo una particolare ricerca. Figura 1: relazioni dell'entità Persona dello schema ER Figura 2: relazioni dell'entità Comune dello schema ER 13

CAPITOLO 3 Progettazione del servizio Anagrafe on-line 3.2. Tipologie di utenti Il servizio Anagrafe on-line, poiché tratta dati personali, necessita di una registrazione di tutti gli utenti che ne fanno uso. È possibile però suddividere gli utilizzatori del servizio in base a chi effettua l accesso e a quali privilegi possiede l utente; gli utenti sono ulteriormente classificabili in due categorie: i dipendenti comunali e gli enti pubblici. Gli enti pubblici sono dei normali visitatori e possono visualizzare le informazioni relative ai residenti nel Comune di Cento utilizzando i vari criteri di ricerca disponibili. I dipendenti comunali possono essere sia utilizzatori del servizio che gestori degli altri utenti. Da queste considerazioni si possono contraddistinguere, per ogni tipo di utente, tre diversi livelli di privilegio: il livello base, il livello avanzato e il livello amministratore. Gli utenti del primo livello sono i visitatori che godono di minori privilegi. È concesso loro di poter ricercare i dettagli di una persona utilizzando query per nome, cognome e per codice fiscale. Non è data la possibilità di ricercare una persona per numero di carta di identità. A questo livello fanno parte la maggior parte degli enti esterni e tutti gli utenti comunali al di fuori dei dipendenti dell SSI e dell anagrafe. Gli utenti del livello avanzato sono sempre dei visitatori, ma hanno la possibilità di usufruire anche della ricerca per numero della carta d identità. A questo livello fanno parte i dipendenti dell anagrafe e particolari enti esterni, come la polizia, i carabinieri e la questura. Al livello amministratore fanno parte i dipendenti dell ufficio SSI che, oltre a servirsi di tutti i criteri di ricerca, possono occuparsi della gestione degli utenti. Le operazioni di gestione di cui un amministratore può fare uso sono: l inserimento di nuovi utenti comunali o esterni e la disattivazione/riattivazione di un utente al quale si vuole togliere o ridare l accesso. I due attributi fondamentali di cui la nuova entità UTENTE dovrà disporre alla procedura di autenticazione sono lo username e la password. 14

CAPITOLO 3 Progettazione del servizio Anagrafe on-line Figura 3: relazioni dell'entità Utente dello schema ER L ultima entità del modello ER utilizzato, è l entità LOG, utilizzata per mantenere una storia degli accessi. Questa è in relazione con l entità UTENTE, attraverso una relazione N:1, come riportato in Figura 3. 3.3. Flussi di conversazione Definite le tipologie di utenti che hanno accesso al servizio, si esaminano ora la conversazioni. Un conversazione si può definire come l insieme di pagine Web, funzioni e dati utili per raggiungere lo stesso scopo [2]. Attraverso una conversazione si possono quindi definire i diversi passi da sviluppare affinché questa sia di senso compiuto. Il servizio Anagrafe on-line presenta un solo tipo di operazione, se visto da utenti visitatori: l operazione di ricerca. La struttura del flusso di questa operazione, rappresentato nella Figura 4, sarà sempre la stessa, indipendentemente che si tratti di una ricerca per nome e cognome, per codice fiscale o per carta d identità ed è stata sviluppata nel seguente modo: - pagina di acquisizione dati, dove si deve precisare ciò che si vuole ricercare, attraverso dei campi di inserimento. Inoltre, mediante altri campi presenti solo per la ricerca per nome e cognome, è possibile dare delle caratteristiche ben definite alla ricerca precisando se la si intende effettuare in modo approssimativo, dove si cercano tutte le persone che hanno nome e cognome che iniziano per la stringa inserita, o in modo esatto, dove i risultati ottenuti devono avere come nome e cognome, lo stesso inserito; è possibile anche limitare le persone che soddisfano la ricerca, accettando solo quelle che presentano una data di nascita compresa in un determinato periodo. Infine si possono specificare i metodi di ordinamento scelti, ovvero in base a che campo si intende 15

CAPITOLO 3 Progettazione del servizio Anagrafe on-line ordinare e se si vuole un ordinamento crescente o decrescente. Prima di passare i criteri della ricerca alla pagina successiva, viene effettuato un controllo dei dati inseriti; - pagina di risultati dati, dove viene effettuata la reale operazione di ricerca, accedendo al database. In questa pagina vengono visualizzati i record che soddisfano ai criteri di ricerca inseriti. Visto che il numero di risultati in output può essere elevato, le informazioni riportate sono limitate; - pagina della persona, che permette la visualizzazione di tutte le informazioni disponibili della persona, in base al livello dell utente e alla condizione della persona: questa infatti sarà provvista di dettagli differenti qualora si tratti di una persona attualmente residente, trasferita presso un altro Comune italiano, iscritta all Associazione Italiana Residenti all Estero (A.I.R.E.) o deceduta; - pagina del nucleo, dalla pagina della persona è possibile accedere alla pagina dove vengono riportati tutti i componenti del nucleo familiare al quale appartiene, per avere una maggiore facilità nel recupero delle informazioni. Le operazioni di inserimento e/o modifica che un utente amministratore può fare non differiscono di molto (vedi Figura 5): - pagina della scelta operazione, dove si deve precisare l operazione che si vuole effettuare, scelta che implica l inserimento o meno di certi dati. Le operazioni che si possono svolgere sono: inserimento di un nuovo utente, disattivazione di un utente esistente e riattivazione di un utente precedentemente disattivato. Prima di passare i criteri della ricerca alla pagina successiva, viene effettuato un controllo dei dati inseriti; - pagina di risultato operazione, dove viene effettuata la reale operazione scelta, accedendo al database e ne viene visualizzato l esito. 16 Figura 4: flusso conversazione di una ricerca

CAPITOLO 3 Progettazione del servizio Anagrafe on-line Figura 5: flusso di conversazione di gestione degli utenti Anche se l utente può non rendersene conto quando utilizza il servizio, la procedura di login può rappresentare una conversazione. Il suo flusso è rappresentato in Figura 6 ed è strutturato nella seguente modalità: - pagina dell accesso, dove si deve precisare il tipo accesso in base all utente che si presenta: accesso per dipendenti comunali o accesso per enti esterni; - pagina di autenticazione, dove avviene il riconoscimento dell utente che intende accedere al servizio; - pagina di log, se la procedura di autenticazione ha avuto esito positivo, si dovrà registrare che l utente ha compiuto un accesso. Se l esito è negativo verrà riproposta la pagina di autenticazione; - pagina di ricerca, l utente ha accesso al servizio e può usufruire delle funzioni disponibili. Figura 6: flusso di conversazione di login 17

CAPITOLO 3 Progettazione del servizio Anagrafe on-line 3.4. Architettura Le scelte tecnologiche fatte nel definire l architettura hardware e software utilizzata per l implementazione dell applicazione Anagrafe on-line, sono vincolate a molteplici aspetti come, ad esempio, qualità, sicurezza ed efficienza. Tale studio è stato molto facilitato in quanto l architettura a disposizione è già stata utilizzata per servizi simili e l applicazione da realizzare non presenta specifiche così dettagliate da richiedere un cambiamento tecnologico. L applicazione sviluppata si appoggia sulla rete intranet del Comune di Cento (vedi Figura 7), separata da Internet attraverso l utilizzo di un firewall, che ha inoltre la funzione di delimitare la DMZ, la DeMilitarized Zone. Tutte le applicazioni Web risiedono su un server della intranet su cui è stato installato il server Web Apache, operante su piattaforma Microsoft Windows. Come DBMS (DataBase Management System), per esigenze dei fornitori, è stato scelto SQL Server di Microsoft. Le richieste che arrivano dalla rete Internet e che hanno come destinatari questi database, subiscono l influenza di un server installato sulla DMZ e che funge da proxy. L utente può accedere all applicazione Web tramite un Web Browser, le cui richieste vengono inoltrate ad un architettura software sviluppata su tre livelli logico-funzionali (applicazione Three-Tier), come riportato in Figura 8: il Web Server, l Application Server e il DataBase Server [1]. Il Web Server si occupa di fornire una pagina Web a seconda delle richieste ottenute dal Web Browser. L Application Server contiene la logica elaborativa dell intera applicazione ed è costituito da un insieme di script interagenti tra di loro e con il server Web. A questo livello avviene la gestione del flusso dati: esso è in grado di soddisfare le richieste di dati e di elaborazione del client. Le modalità di realizzazione del livello intermedio dipendono spesso dalle caratteristiche e dalle tecnologie supportate dal server Web. Infine, il DataBase Server ha il compito di accedere e gestire i dati residenti su database, fornendo tabelle e viste. 18

CAPITOLO 3 Progettazione del servizio Anagrafe on-line Figura 7: schema della rete del Comune di Cento Figura 8: architettura dell applicazione Anagrafe on-line 3.5. Layout delle pagine Stabiliti i flussi di conversazione che interessano le varie pagine Web, si deve definire la struttura grafica che le varie pagine devono rispettare. La creazione del layout assume una notevole importanza nel mondo del Web, in quanto rappresenta l approccio che l utente ha con tale servizio. Lo scopo principale può quindi essere riassunto nel 19

CAPITOLO 3 Progettazione del servizio Anagrafe on-line cercare di agevolare l utente nella navigazione. È nella creazione che avviene lo studio per la separazione tra il contenuto e la presentazione. Lo schema utilizzato per le pagine Web del servizio Anagrafe on-line è simile a quello utilizzato dagli altri servizi del portale, in quanto si vuole cercare di uniformare tutti i servizi con la stessa grafica del sito comunale. La struttura che si intende seguire è la seguente ed è rappresentata in Figura 9: Top: è la parte che contiene l intestazione della pagina Web. Si dovranno visualizzare delle informazioni che riguardano il Comune di Cento. Menusx: rappresenta il menù utilizzato per la navigazione all interno del servizio, quindi deve attivarsi solo dopo aver effettuato l autenticazione dell utente. In questa parte si devono quindi riportare le operazioni che si possono effettuare, prestando attenzione ai privilegi che possiede l utente con il quale si sta interagendo. Footer: è la parte sottostante alla pagina, dove è solito riportare informazioni secondarie per l utilizzo del servizio. Content: mentre le altre parti rimangono fisse per tutta la sessione di utilizzo del servizio, questa è l unica parte che si presenta dinamica. Infatti cambia sia a seconda dell operazione che si sceglie di effettuare, sia in base allo stato nella quale la stessa operazione si può trovare. Figura 9: struttura del layout utilizzato 20

4. REALIZZAZIONE DEL SERVIZIO ANAGRAFE ON-LINE Sviluppare un applicazione secondo una logica a componenti significa scomporla in blocchi. È molto utile separare le funzioni necessarie in una struttura multi-livello al fine di fornire astrazioni più complesse a partire dalle funzionalità elementari. Si è passati da una struttura a quattro livelli a una a tre livelli: il livello logico più basso è rappresentato dai servizi (gestione del database), il livello più alto è il livello di presentazione (visualizzazione delle pagine Web) e il livello intermedio ha il compito di interfacciare gli altri due. 4.1. Tecnologia utilizzata In questo paragrafo viene introdotta una panoramica del mondo di Internet, al fine di introdurre le tecnologie utilizzate nella programmazione, in particolare quelle scelte dal Comune di Cento per creare il servizio Anagrafe on-line e altre applicazioni attive sul suo portale Web. 4.1.1. Internet e HTML HTML (acronimo per Hyper Text Markup Language) è un linguaggio usato per descrivere i documenti ipertestuali disponibili nel Web. Non è un linguaggio di programmazione, ma un linguaggio di markup, ossia descrive il contenuto, testuale e non, di una pagina Web. È stato sviluppato alla fine degli anni '80 da Tim Berners-Lee al CERN di Ginevra. Verso la metà dello scorso decennio ha avuto una forte diffusione, in seguito ai primi utilizzi commerciali del Web [6]. È un linguaggio di pubblico dominio la cui sintassi è stabilita dal World Wide Web Consortium (W3C). 21

Gli elementi di questo linguaggio rappresentano le strutture a cui è delegata la funzione di formattare i dati o indicare al Web browser delle informazioni. Ogni elemento è racchiuso all'interno di tag, uno di apertura ed uno di chiusura (per certi elementi è opzionale). I tag sono dei markup costituiti da una sequenza di caratteri racchiusa da due parentesi angolari ( < e > ). Tutte le informazioni contenute nel documento devono essere indicate tra i tag <html> e </html>. All'interno di questi due tag la sintassi HTML permette due sezioni: una racchiusa tra i tag <head> e </head>, ed una racchiusa tra i tag <body> e </body>. All'interno della prima sezione sono indicate delle informazioni generali riguardanti l'intero documento e che non vengono visualizzate dal browser. All'interno della sezione BODY sono indicate tutte le informazioni effettivamente presenti nel documento. Attualmente i documenti HTML incorporano molte tecnologie, che offrono la possibilità di aggiungere al documento ipertestuale delle animazioni interattive o degli effetti particolari. Si tratta di linguaggi come CSS, JavaScript o Java, o di altre applicazioni multimediali. 4.1.2. PHP PHP nasce nel 1994, a opera di Rasmus Lerdorf, con lo scopo di facilitare, ai programmatori, l'amministrazione delle homepage personali: da qui trae origine il suo nome, che allora significava appunto Personal Home Page. Essendo un progetto di tipo open source, ben presto si formò una ricca comunità di sviluppatori che portò alla creazione di PHP 3: la versione del linguaggio che diede il via alla crescita esponenziale della sua popolarità. Tale popolarità era dovuta anche alla forte integrazione di PHP con il Web server Apache (il più diffuso in rete), e con il database MySQL. Tale combinazione di prodotti, integralmente ispirata alla filosofia del free software, diventò ben presto vincente in un mondo in continua evoluzione come quello di Internet. 22

Alla fine del 1998 erano circa 250.000 i server Web che supportavano PHP: un anno dopo superavano il milione. I 2 milioni furono toccati in aprile del 2000, e alla fine dello stesso anno erano addirittura 4.800.000. Il 2000 è stato sicuramente l'anno di maggiore crescita del PHP, coincisa anche con il rilascio della versione 4, con l introduzione di una lunga serie di nuove funzioni, fra cui quelle importantissime per la gestione delle sessioni. La crescita di PHP, nonostante sia rimasta bloccata fra luglio e ottobre del 2001, è poi proseguita toccando quota 7.300.000 server alla fine del 2001, per superare i 10 milioni alla fine del 2002, quando è stata rilasciata la versione 4.3.0. La continua evoluzione dei linguaggi di programmazione concorrenti e l'incremento notevole dell'utilizzo del linguaggio portò così PHP 5, che si propone come innovazione nell'ambito dello sviluppo Web open source [7]. Oggi PHP è conosciuto come un linguaggio completo di scripting, sofisticato e flessibile, che può girare praticamente su qualsiasi server Web, su qualsiasi sistema operativo, e consente di interagire praticamente con qualsiasi tipo di database (SQLite, MySQL, PostgreSQL, MS SQL Server, Oracle, SyBase, Access e altri). Si può utilizzare per i più svariati tipi di progetti, dalla semplice home page dinamica fino al grande portale o al sito di e-commerce. Parlando di PHP, bisogna sempre considerare il lato client, cioè gli aspetti che riguardano gli utenti che effettuano particolari richieste, e il lato server, cioè le operazioni che devono esser effettuate per fornire dei risultati alle richieste degli utenti. Per fare ciò, una pagina PHP contiene sia codice HTML, ma anche codice PHP. Il server, prima di inviare la pagina, esegue il codice PHP (contenuto tra il tag d apertura <?php e il tag di chiusura?>) che in genere produce altro codice HTML, in modo che dopo l'esecuzione, la pagina non conterrà più codice PHP, ma solo HTML. A questo punto è pronta per essere spedita al browser dove l'utente potrà visualizzare solo il codice HTML, e non aver accesso al codice PHP. Inoltre un altro aspetto che differenzia questo linguaggio è la presenza in fondo ad ogni istruzione PHP di un punto e virgola; infatti la sintassi del PHP prevede che il punto e virgola debba obbligatoriamente chiudere ogni istruzione. Si può quindi affermare che PHP è un ottimo linguaggio, leader tra quelli open source per lo sviluppo Web, molto semplice da imparare e subito produttivo. 23

4.1.3. JAVASCRIPT Lo sviluppo di questo linguaggio risale quando ormai il linguaggio HTML si era ben affermato. Questo portò un notevole cambiamento alle pagine, per cui alcuni effetti diventarono più facili da effettuarsi. Pensando al nome di questo linguaggio è facile pensare che alla base ci sia il linguaggio Java. In verità tale nome deriva da una collaborazione tra Netscape, che stava sviluppando il linguaggio Live Script, e la Sun, che si stava facendo conoscere con Java. Javascript ha una sintassi molto simile a quella di altri linguaggi. La caratteristica principale di Javascript, infatti, è quella di essere un linguaggio di scripting, il più usato. Questa particolarità comporta una notevole serie di vantaggi e svantaggi secondo l'uso che se ne deve fare e tenendo in considerazione il rapporto client-server. JavaScript, di solito viene usato come linguaggio lato client: JavaScript infatti viene eseguito non dal server, ma dal browser dell'utente. JavaScript ci consente di eseguire operazioni che riguardano il sistema dell'utente, come ad esempio aprire una nuova finestra del browser, o controllare la compilazione di una form segnalando eventuali errori prima che i dati vengano spediti al server. Permette anche di avere un'interazione con l'utente: ad esempio, possiamo far sì che quando il mouse passa su una determinata immagine, tale immagine si modifichi. Per svolgere tutti questi compiti, JavaScript deve essere eseguito sul sistema dell'utente: per questo il codice JavaScript viene spedito al browser insieme al codice HTML. Quindi l'utente ha la possibilità di visualizzarlo, contrariamente a ciò che accade con PHP. Uno dei vantaggi di questo linguaggio è la maggior sicurezza e affidabilità perché in chiaro e da interpretare, quindi può essere filtrato. Per ragioni di sicurezza, ciò porta a una limitatezza delle capacità di questo linguaggio. Ma il problema più consistente, è che il codice è visibile e può essere letto da chiunque. 24

4.1.4. CSS Dietro l acronimo CSS, Cascading Style Sheets cioè Fogli di stile a cascata, si nasconde uno dei fondamentali linguaggi standard del W3C. Questo linguaggio può essere visto come un linguaggio strutturale, attinente anche la presentazione di un documento. L'ideale perseguito da anni si può sintetizzare con una nota espressione: separare il contenuto dalla presentazione. La prima specifica ufficiale di CSS (CSS1) risale al dicembre del 1996. Nel maggio 1998 è stata la volta della seconda versione: CSS2. Attualmente si sta sviluppando la nuova specifica CSS3 [4]. L obiettivo dei CSS è quello di poter fare tutto ciò che con HTML non si può realizzare. Con i fogli di stile, si possono definire proprietà per i font, i colori, gli stili, le immagini, gli sfondi, e tanto altro, con il vantaggio che, essendo i CSS separati dal resto, le modifiche non devono esser effettuate su tutte le pagine. La gestione del sito risulta quindi essere più semplice in quanto le pagine si presentano più leggere e facili da modificare. I CSS costituiscono uno degli strumenti fondamentali per fornire l accessibilità. 4.1.5. MS SQL SERVER Microsoft SQL Server è un DBMS, Database Management System cioè un Sistema di gestione dei database, nato come prodotto leader del suo settore in ambiente Microsoft. Il World Wide Web è una delle maggiori fonti di informazione a cui oggi si può attingere: si ha la possibilità di consultare un patrimonio di centinaia di milioni di pagine riguardanti praticamente ogni argomento di interesse. Spesso queste pagine non sono documenti statici, ma vengono creati dinamicamente quando noi li richiediamo e le informazioni che contengono vengono estratte da un database, attraverso il linguaggio SQL (Structured Query Language). 25

Un database è una collezione di dati che viene gestita e organizzata da un software specifico, il DBMS (DataBase Management System, Sistema di Gestione di DataBase). Un DBMS è sostanzialmente uno strato software che si frappone fra l'utente e i dati veri e propri. Grazie a questo strato intermedio l'utente e le applicazioni non accedono ai dati così come sono memorizzati effettivamente, cioè alla loro rappresentazione fisica, ma ne vedono solamente una rappresentazione logica. Ciò permette un elevato grado di indipendenza fra le applicazioni e la memorizzazione fisica dei dati. L'amministratore del database può decidere di memorizzare i dati in maniera differente o anche di cambiare il DBMS senza che le applicazioni, e quindi gli utenti, ne risentano. La cosa importante è che non venga cambiata la rappresentazione logica di quei dati, che è la sola cosa che i loro utilizzatori conoscono. Il Database che viene utilizzato è basato sul modello relazionale e si presenta come una tabella bidimensionale composta da righe e colonne. Ciascuna riga o tupla, rappresenta un'entità, mentre le caratteristiche di ciascuna entità sono definite invece dalle colonne delle relazioni e vengono chiamate attributi. Le funzionalità principali che ci si deve aspettare da un DBMS sono quelle di consentire l'accesso ai dati attraverso uno schema concettuale, permettere la condivisione e l'integrazione dei dati fra applicazioni differenti, controllare l'accesso concorrente ai dati, assicurare la sicurezza e l'integrità' dei dati. Grazie a queste caratteristiche le applicazioni che vengono sviluppate possono contare su una sorgente dati sicura, affidabile e generalmente scalabile. Il Comune di Cento ha preferito lavorare con questo tipo di DBMS al posto di altri, che hanno il vantaggio di essere disponibili nel mercato senza portare alcun costo aggiuntivo nel bilancio comunale, per il fatto di essere vincolato dalle richieste dei propri fornitori nell utilizzo del DBMS della Microsoft in molti servizi. 26

4.1.6. APACHE Apache è un Web server per il protocollo HTTP, designato per poter girare come un processo standalone, senza chiedere l'appoggio ad altre applicazioni o direttamente all'utente. Il suo sviluppo è a cura dell Apache Group, un team composto solamente da volontari. Per poter funzionare nella modalità precedentemente descritta, Apache, una volta avviato, crea dei sottoprocessi per poter gestire le richieste: questi non potranno mai interferire con il processo maggiore, ma potrà succedere l'opposto. Essendo sviluppato da volontari, l aspetto principale di Apache è che la sua distribuizione è libera: si ritiene, infatti, che strumenti di questo genere debbano essere accessibili a tutti, e che le software house debbano guadagnarci solo producendo implementazioni, magari personalizzate per alcune categorie di utenti. Inoltre, lasciando il software in mano di chiunque nonchè completo di sorgenti, è possibile che utenti contribuiscano, sia tramite feedback sia tramite vere e proprie patch, a migliorare il prodotto finale. Il dominatore incontrastato del mercato dei Web server è Apache, nelle sue varie versioni, presente su più del 60% dei Web server in rete. A seguire, ben distanziato è IIS di Microsoft, più del 25% di installazioni [5]. Il Comune di Cento ha sempre usufruito del server Web Apache da quando dispone del CED, Centro Elaborazione Dati, e il vantaggio di disporre di tale tecnologia senza alcun costo, ha certamente influito sulla scelta di non abbandonarla per preferirla ad altre. 4.2. Database L applicazione Anagrafe on-line si appoggia a un database già esistente che risiede su un server che ha la particolare proprietà di aggiornare ogni giorno le tabelle che lo compongono. Questo database è composto da molte tabelle che riportano non solo 27

informazioni riguardanti la popolazione, ma anche altri dati. Si possono trovare informazioni sulla persona dall ambito familiare a quello lavorativo, ai documenti di vario genere, alle sezioni elettorali, alla catalogazione di vie, frazioni, province, stati È presente una quantità elevata di dati residenti su ben 75 tabelle, ma quelle che effettivamente sono utili per la realizzazione dell applicazione sono solo una decina. Nella Figura 10 sono riportati il nome e la descrizione di tutte le tabelle che vengono prodotte. Figura 10: tabelle presenti nel database 28

4.2.1. Viste Oltre alla presenza di numerose tabelle c è da aggiungere un altro aspetto riguardante la tabella principale del servizio, la 0101, che contiene i dati di anagrafica di base. Questa tabella presenta dimensioni molto elevate, sia in verticale, per il numero di tuple o righe presenti, che in orizzontale, essendo ogni record composto da numerosi campi. Tutto ciò può sicuramente portare a grossi rallentamenti dell applicazione. È quindi necessario ridurre le dimensioni della tabella, limitando a considerare solamente i campi che si intendono visualizzare o che possono essere utili per particolari operazioni. La soluzione a questo problema è creare delle viste, che rappresentano delle porzioni di tabelle definite in funzione di altre. Quindi oltre ad aver la possibilità di visualizzare solo certi campi, si possono mettere in relazione differenti tabelle, sempre che ciò sia stato definito nello schema ER. A seguire vengono riportate e descritte le viste che sono state create: Vista dati ANAGRAFE La vista che tratta i dati dell anagrafe, contiene i seguenti valori: CODICE COGNOME_DEF NOME_DEF SESSO DES_COM PROVINCI CODCITTA GG MM AAAA COD_FISC CODVIA DESC_VIA FRAZIONE NUM_CIV BARRATO INTERNO CAP IN_VITA RISIEDE AIRE NUCLEO Questa vista è stata creata mettendo in relazione le seguenti tabelle: [0101] = Anagrafica di base (nello schema ER è rappresentata dall entità Persona ed è sempre in questa tabella che è presente un campo che rappresenta l entità Nucleo) [0127] = Dati fiscali (nello schema ER è rappresentata dall entità Codice Fiscale) [0201] = Archivio Comuni (nello schema ER è rappresentata dall entità Comune) [0301] = Archivio Vie (nello schema ER è rappresentata dall entità Via) 29

Figura 11: codice per la creazione della vista dell'anagrafe Di notevole importanza risultano i 3 campi booleani usati per indicare se la persona è viva (IN_VITA), se risiede attualmente presso il comune (RISIEDE) e se è iscritto all A.I.R.E. (AIRE). Particolari aggiustamenti sono stati fatti per la data (vedi Figura 11) che è stata suddivisa nei 3 campi giorno (GG), mese (MM) e anno (AAAA) e per la stringa contenente nome e cognome, la quale è stata separata in nome (NOME_DEF) e cognome (COGNOME_DEF). Vista dati MORTI La vista che tratta i dettagli delle persone decedute, contiene i seguenti valori: CODICE COGNOME_DEF NOME_DEF GG MM AAAA DES_COM PROVINCI DESC_STA Questa vista è stata creata mettendo in relazione le seguenti tabelle: [0101] = Anagrafica di base [0105] = Dati di morte (nello schema ER è rappresentata dall entità Morte) [0201] = Archivio Comuni [0501] = Stati (nello schema ER è rappresentata dall entità Stato) 30

Figura 12: codice per la creazione della vista delle persone decedute Fondamentale per la creazione di questa vista, diventa quindi il controllo sullo stato di vita (IN_VITA deve essere N ). Anche qui vengono effettuati gli stessi aggiustamenti per il nome e cognome e per le date fatti per la query nella creazione della vista coi dati dell anagrafe (vedi Figura 12). Vista dati EMIGRAZIONI La vista che tratta i dettagli delle persone che si sono trasferite presso un altro comune d Italia, contiene i seguenti valori: CODICE COGNOME_DEF NOME_DEF GG MM AAAA DES_COM DESC_PRO Questa vista è stata creata mettendo in relazione le seguenti tabelle: [0101] = Anagrafica di base [0104] = Immigrazione Emigrazione (nello schema ER è rappresentata dall entità Emigrazione) [0201] = Archivio Comuni [0401] = Province (nello schema ER è rappresentata dall entità Provincia) 31

Figura 13: codice per la creazione della vista delle persone emigrate Fondamentale per la creazione di questa vista, diventa quindi il controllo sullo stato di vita (IN_VITA deve essere S ), sullo stato di residenza (RISIEDE deve essere N ) e se si tratta di una pratica di emigrazione e non di immigrazione (IE deve essere E ). Anche qui vengono effettuati gli stessi aggiustamenti per il nome e cognome e per le date fatti per la query nella creazione della vista coi dati dell anagrafe (vedi Figura 13). Vista dati AIRE La vista che tratta i dettagli delle persone che si sono trasferite presso un comune estero, contiene i seguenti valori: CODICE COGNOME_DEF NOME_DEF GG MM AAAA DES_COM DESC_STA Questa vista è stata creata mettendo in relazione le seguenti tabelle: [0101] = Anagrafica di base [0121] = Residenza Estero (nello schema ER è rappresentata dall entità Aire) [0201] = Archivio Comuni [0501] = Stati 32

Figura 14: codice per la creazione della vista delle persone iscritte all'a.i.r.e. Fondamentale per la creazione di questa vista, diventa quindi il controllo sullo stato di vita (IN_VITA deve essere S ), sullo stato di residenza (RISIEDE deve essere N ) e sull iscrizione all A.I.R.E. (AIRE deve essere S ). Anche qui vengono effettuati gli stessi aggiustamenti per il nome e cognome e per le date fatti per la query nella creazione della vista coi dati dell anagrafe (vedi Figura 14). Vista dati CARTE D IDENTITÁ La vista che tratta i dettagli delle carte d identità delle persone, contiene i seguenti valori: CODICE COGNOME_DEF NOME_DEF GG MM AAAA DESC_VIA FRAZIONE NUM_CIV BARRATO INTERNO CAP NUMDOC GG_CI MM_CI AAAA_CI Questa vista è stata creata mettendo in relazione le seguenti tabelle: [0101] = Anagrafica di base [0112] = Documenti (nello schema ER è rappresentata dall entità Carta d identità) [0301] = Archivio Vie [DERIVEDTBL] = Tabella della subquery contenente il codice della persona (COD_SCAD) e la data di scadenza dell ultima carta d identità (SCADENZA), utilizzata per scartare le carte d identità scadute e successivamente rinnovate. 33

Figura 15: codice per la creazione della vista delle carte d'identità Per la creazione di questa vista, viene utilizzata una subquery che ha il compito di estrarre per ogni persona la carta d identità valida, in modo da scartare le carte d identità scadute. Inoltre devono essere effettuati dei controlli sullo stato di vita (IN_VITA deve essere S ), sullo stato di residenza (RISIEDE deve essere S ), sull iscrizione all A.I.R.E. (AIRE deve essere N ), sul tipo di documento (TIPODOC vale 01 per la Carta d Identità e 05 per la Carta d Identità Elettronica) e sulla validità della Carta d Identità (DOCUMEVA vale A per annullata, N per non per espatrio). Anche qui vengono effettuati gli stessi aggiustamenti per il nome e cognome e per le date fatti per la query nella creazione della vista coi dati dell anagrafe (vedi Figura 15). La subquery riportata in Figura 16 è utilizzata per trovare l ultima carta d identità fatta da ogni persona e contiene i seguenti campi: COD_SCAD SCADENZA Figura 16: funzione utilizzata per trovare la carta d'identità più recente 34

4.2.2. Tabelle Oltre alle tabelle esistenti che hanno portato alla creazione delle viste elencate nel paragrafo precedente, è stato necessario aggiungerne altre due: la tabella UTENTI e la tabella LOG. Queste sono le uniche tabelle che subiranno operazione di scrittura, attraverso inserimenti e modifiche. Le altre tabelle sono utilizzate solamente in lettura. Tabella dati UTENTI La tabella UTENTI è utilizzata per la registrazione di chi effettivamente può accedere al servizio. È importante suddividere gli utenti in due categorie (campo TIPO): utenti di dominio e utenti esterni. Quindi il campo USERNAME conterrà cognome.nome se si tratta di un utente comunale, oppure una stringa che identifica un ente ben preciso. Solamente nel secondo caso, il solo campo USERNAME non identifica in modo univoco un utente, ma si necessita del campo successivo. Il campo PASSWORD, nel caso di un utente di dominio non dovrà contenere nulla, dato che il login è effettuato da un altro servizio, mentre per l utente esterno si provvederà a fornire una stringa che garantisce, in coppia con lo USERNAME, l unicità di un utente. Un altro campo, che è presente solo nel caso di utente esterno, è il NOME che servirà per avere una chiara descrizione di quell utente. Per definire cosa un utente possa fare, si introduce il campo LIVELLO. Con questo possiamo suddividere gli utenti nei tre livelli base, avanzato e amministratore. Inoltre, è presente il campo VALIDAZIONE. Questo campo è utilizzato per acconsentire o meno l accesso a un particolare utente e può avere tre differenti valori: valido per un utente che può avere accesso, scaduto per un utente che non accede al servizio da più di 60 giorni e quindi necessita di un cambio di password e disattivato per un utente al quale è stato tolto il diritto di accedere da parte di un amministratore. Se per gli utenti esterni si necessita di una registrazione, per gli utenti di dominio no, dato che fanno già parte del dominio 35

della rete Intranet comunale, il dominio100. Per ovviare a problemi di censimento dell elevato numero di dipendenti comunali (circa 200), gli utenti di dominio hanno tutti un livello di privilegio base, e solo i dipendenti che godono di diritti superiori sono inseriti nel database. Infine è presente un campo id che è rappresentato da un contatore per aumentare ancor di più l unicità di un record. La struttura della tabella Utenti è riportata in Figura 17, seguita dalla Figura 18 contenente il relativo codice per crearla. Tabella dati LOG La tabella LOG serve sia per registrare tutti gli accessi, sia per tener nota di particolari operazioni svolte da qualche utente o dagli amministratori a carico di altri utenti. In questa tabella ritroviamo i campi USERNAME e NOME utilizzati per identificare in modo univoco un record, assieme al solito campo contatore id. L operazione da tener nota verrà inserita nel campo INFO e assumerà valori diversi a seconda che l utente venga inserito, disattivato o riattivato dall amministratore o che l utente abbia accesso al servizio o che la password venga cambiata ( cambio password ). Inoltre verranno inserite informazioni riguardo a quando è stata effettuata l operazione, nei campi DATA e ORA. La struttura della tabella Log è riportata in Figura 19, seguita dalla Figura 20 contenente il relativo codice per crearla. Figura 17: struttura della tabella degli utenti Figura 18: : codice per la creazione della tabella degli utenti 36

Figura 19: struttura della tabella dei log Figura 20: codice per la creazione della tabella dei log Vista dati ACCESSI Questa vista è utilizzata per avere una storia non solo di chi ha avuto accesso al servizio, ma anche per i nuovi utenti e per chi ha riottenuto il diritto di poter accedere dopo un cambio password o dopo essere stato riattivato da un amministratore. Nella vista sono contenuti i seguenti valori: USERNAME NOME DAY Questa vista è stata creata mettendo in relazione le seguenti tabelle: [LOG] = Statistiche operazioni (nello schema ER è rappresentata dall entità Log) Per la creazione di questa vista, si deve ottenere l ultimo accesso che uno specifico utente ha ottenuto o l ultima operazione importante effettuata su tale utente. Deve essere quindi controllato il tipo di operazione: INFO deve valere INSERITO o ACCESSO o CAMBIO PASSWORD o RIATTIVATO (vedi Figura 21). 37

Figura 21: codice per la creazione della vista dei log 4.2.3. Connessione al database Dopo aver creato tabelle e viste necessarie per la gestione dei dati, bisogna far in modo che da una pagina PHP, attraverso particolari funzioni, sia possibile collegarsi al database Microsoft SQL Server in questione ed eseguire operazioni su di esso tramite il linguaggio SQL. L accesso al database avviene mediante autenticazione: ciò vuol dire che, prima di poter effettuare qualsiasi operazione su di esso, si deve disporre dei privilegi necessari. In particolare, le informazioni che bisogna conoscere per ottenere una connessione con un particolare database sono l indirizzo IP del server dove risiede il database, il nome dell utente assegnato, la relativa password e il nome del database. È opportuno salvare tali parametri in apposite variabili piuttosto che utilizzarli direttamente nelle chiamate di funzione, in modo che se dovessero essere apportate delle modifiche, ad esempio cambiare username e password oppure trasferire il database su un altro server, basta cambiare tali valori una volta sola. Solo dopo aver acquisito la connessione con il database, è possibile effettuare un interrogazione: questa deve essere una stringa che presenta però la struttura di una vera e propria query SQL. Il risultato non è detto che corrisponda ad una singola riga di una tabella ed è quindi fondamentale poter scorrere uno a uno i record trovati. Infine, è buona norma chiudere le connessioni aperte, anche se questa operazione è diventata opzionale in quanto tutte le connessioni rimaste aperte verranno chiuse automaticamente alla chiusura della pagina PHP. Le funzioni citate sono dichiarate nel file database.php (vedi Figura 22). 38

Figura 22: codice PHP con le funzioni utilizzate per la connessione al database Ogni volta che si dovrà effettuare una operazione sul database, è necessario limitarsi a richiamare questo file e le funzioni che contiene, come riportato in Figura 23. Figura 23: codice PHP utilizzato per la connessione del database 39

4.3. Accessi Il servizio Anagrafe on-line è un applicazione che tratta dati strettamente personali e quindi non può essere destinata a tutti. Infatti bisogna conoscere con precisione chi può usufruirne, registrando chi può avervi accesso. La fase di autenticazione è una delle fasi più importanti e delicate per un applicazione Web: bisogna proteggere l accesso nel migliore dei modi, per evitare possibili intercettazioni di informazioni da parte di utenti non ammessi. Tuttavia dire che un servizio può essere protetto e sicuro limitandosi alla sola autenticazione degli accessi degli utente, sarebbe limitativo e fuorviante. Essendo il servizio indirizzato sia a utenti comunali che utenti esterni, la prima cosa che viene chiesta è il tipo di utente che intende accedere, come riportato in Figura 24. A seconda della scelta si procede in due differenti modi di autenticazione. Infatti questo progetto viene sviluppato in due sottocartelle, una per gli utenti di dominio e l altra per gli enti pubblici. Figura 24: pagina Web per la selezione del tipo di accesso 40

4.3.1. Login utenti comunali Come si accennava in precedenza, ogni utente comunale, per poter lavorare con un computer, è soggetto a una autenticazione di dominio. Le due principali di caratteristiche che si possono attribuire alla rete in merito a tutto ciò sono: SICUREZZA, in quanto un utente che non dispone dell accesso, non deve avere la possibilità di far parte della rete; MOBILITÁ, è uno degli aspetti che sta pian piano modificando il modo di lavorare. Infatti con l autenticazione di dominio non esiste più una relazione uno a uno tra utente e computer, ma viene data la possibilità all utente di lavorare e disporre di informazioni indipendentemente dalla macchina in cui si trova. Con questo aspetto è data anche la possibilità di lavorare da casa, facendo uso di un metaframe (il Comune di Cento utilizza Citrix). Un dipendente comunale, viene quindi registrato in particolari database e, per procedere all autenticazione (attraverso la finestra riportata nella Figura 25), deve disporre di un nome utente, formato da cognome.nome, e da una password che ogni due mesi deve esser cambiata per aumentare ancor più il livello di sicurezza. Figura 25: finestra per l'autenticazione 41

Il servizio Anagrafe on-line, facendo uso di un particolare modulo Apache (mod_auth), riprende l autenticazione prima citata e la effettua di nuovo. In verità si possono verificare due situazioni: l utente accede al servizio Web da Internet e quindi deve essere autenticato; l utente ha già effettuato il login di dominio per accedere alla rete comunale e quindi accede al servizio dalla rete Intranet. In questo caso non viene effettuato un nuovo login, ma il modulo Apache si limita a settare il REMOTE_USER con il cognome.nome dell utente. Se il login ha successo, si accede alla tabella degli utenti registrati: se esiste una riga con lo stesso username dell utente vengono prelevati il campo per il livello di accesso alle aree protette (LIVELLO) e il campo per la validità dell utente (VALIDAZIONE), altrimenti l utente è settato a livello base. Si prosegue accedendo poi all applicazione. 4.3.2. Login enti esterni Gli enti esterni che accedono all applicazione Web, devono essere tutti registrati (la richiesta di registrazione a un particolare servizio viene fatta attraverso l utilizzo di moduli pdf creati appositamente). Basterebbe quindi effettuare una ricerca nella tabella degli utenti, se tale ente è presente o meno. Prima di ciò, sempre per aumentare il livello di sicurezza, viene inserito un login uguale per tutti, utilizzato per proteggere la rete e acconsentire a procedere con l autenticazione dell ente solo a chi è concesso. In questo caso è utilizzato un altro modulo Apache (mod_auth_sspi), che ha la particolarità di proteggere, con la stessa autenticazione, tutti gli script php, immagini e altro presenti nella specifica cartella degli enti esterni. Una volta effettuato il login, viene richiesto lo username e la password con i quali l ente esterno deve essere ricercato nella tabella degli utenti, come illustrato nella Figura 26. 42

Figura 26: pagina Web per il login degli enti pubblici esterni Come nel caso degli utenti comunali, se viene trovato un record con username e password indicati allora si procede a recuperare i vari campi per aver maggiori dettagli di tale ente per accedere al servizio, altrimenti viene effettuato un nuovo login. Solo per questa tipologia di utenti, viene data la possibilità di cambiare la password per accedere al servizio agli enti che hanno una password scaduta per non aver effettuato accessi per più di 60 giorni. 4.4. Il sito Web Nei precedenti paragrafi si è discusso delle operazioni che un utente deve affrontare per poter accedere al servizio. Se queste procedure vengono superate con successo, prima di visualizzare ciò che effettivamente un utente può fare nell applicazione, vengono creati dei cookie. Questi dovranno contenere le informazioni principali di un utente, come ad esempio lo username, la password, il tipo di utente, il livello di accesso al servizio e la validità di tale utente. Non è di sicuro la cosa migliore utilizzare i cookie per memorizzare questi campi, in quanto diminuisce notevolmente il livello di sicurezza del servizio: l intercettazioni di queste particolari strutture da parte di utenti indesiderati porterebbe all utilizzo dell applicazione utilizzando però l accesso di un altro utente. Per prevenire a tutto ciò, si è ricorso all inserimento di informazioni non in forma chiara, ma codificati con particolari algoritmi. 43

Se si deve classificare il login degli utenti in base alla sicurezza, quello degli utenti comunali è certamente preferibile a quello degli enti esterni, questo perché un login effettuato attraverso un apposita finestra di autenticazione è differente da un login realizzato con dei valori inseriti in appositi campi testo di una form. La protezione a livello di rete, che è stata inserita nel secondo caso, ha appunto lo scopo di aumentarne la sicurezza. A ciò viene affiancato un metodo dove i valori inseriti vengono mandati in post non in chiaro, ma cifrati con una chiave che non ha mai lo stesso valore. A ogni accesso, oltre a esser registrato nella tabella LOG del database con campo INFO che vale ACCESSO, viene effettuata un altra operazione: il controllo della password. È già stato detto che gli enti esterni hanno una password della durata di 60 giorni. Questa procedura viene effettuata accedendo alla vista VIS_LOG e recuperando la data dell ultima operazione (accesso, inserimento, riattivazione o cambio password) riferita a tale utente: se sono trascorsi più di 60 giorni, l utente passa nello stato di SCADUTO. Il conteggio dei giorni viene effettuato utilizzando la funzione riportata in Figura 27, dove viene fatta una differenza tra la data odierna e la data trovata, entrambe espresse in secondi, successivamente convertite in giorni. Visto che gli utenti comunali non devono subire tale controllo, questo metodo viene effettuato solo dagli enti esterni. Questa operazione è svolta anche dagli amministratori con una particolare differenza: mentre un utente esterno effettua un controllo su se stesso, l amministratore si prende il compito di verificare tutti gli enti esterni. L utilizzatore del servizio Web attraversa, nella navigazione, le seguenti pagine: anagrafe.dwt.php (Figura 28) : questa non è propriamente una pagina, bensì un template, utilizzato per definire la struttura delle pagine Web che compongono l applicazione. Utilizzando i tag <div>, vengono infatti definiti il top contente il logo del Comune di Cento e il nome del servizio che stiamo utilizzando, il footer con informazioni per il trattamento dei dati e la legenda delle access key, il content che verrà utilizzato da tutte le altre pagine per visualizzare informazioni e il menusx cioè il menù di navigazione utile per accedere alle varie operazioni possibili del servizio, prestando attenzione che certi collegamenti dovranno esser attivi solo se l utente fa parte di un certo livello. Sempre nel template vengono indicati i fogli di stile che verranno utilizzati; 44

Figura 27: funzione PHP utilizzata per calcolare i giorni trascorsi dall ultimo accesso Figura 28: template utilizzato per il servizio "Anagrafe on-line" ricerca_nome.php e risultati_nome.php (Figura 29 e Figura 30): la prima pagina indicata visualizza la form utilizzata per permettere la ricerca di una persona inserendo il nome e il cognome. Sono presenti inoltre altri campi utili per l ordinamento e altri per limitare la ricerca; con i primi è possibile scegliere in base a quale campo si preferiscono ordinare i risultati e se in modo crescente o decrescente, con gli altri è data l opportunità di scegliere se i risultati devono coincidere con i valori inseriti nella ricerca o se basta solo che inizino per la stringa introdotta. Sempre per dare maggiori dettagli nella ricerca, si possono inserire due date per accettare solo le persone che sono nate nell arco di tempo indicato. Affinché la ricerca abbia senso sono state utilizzate delle funzioni Javascript per controllare le stringhe inserite. Infatti la ricerca è possibile anche inserendo solamente un campo tra nome e cognome, però non devono contenere caratteri speciali come percentuali, parentesi, ecc. o doppi spazi. Infine viene verificata anche la data, non solo controllando che le date inserite esistano veramente, ma perchè l arco di tempo abbia senso, la prima data deve essere precedente alla seconda. La seconda pagina visualizza una tabella con tutti i risultati che soddisfano i criteri di ricerca specificati nella pagina precedente, che vengono riportati in testa a questa pagina. Per ogni riga della tabella viene riportato il nome e cognome, la data di nascita e, se disponibili, la residenza. Nel caso la ricerca non dia alcun risultato, un messaggio segnalerà l inesistenza di persone che soddisfino i criteri indicati. Dato che il database 45

presenta molte imprecisioni, ad esempio per gli italiani residenti all estero viene segnalata come via di residenza a volte A.I.R.E., altre A.I.R.E, altre ancora con la stringa VIA davanti, vengono filtrati dei campi che presentano valori insignificanti. A quelli citati prima si aggiungono i numeri civici, i barrati, gli interni e i C.A.P. nulli. Cliccando sul nome e cognome della persona, si accede alla pagina descritta successivamente; Figura 29: pagina Web per l'operazione di ricerca del nome e cognome Figura 30: pagina Web per la visualizzazione dei risultati dell'operazione di ricerca del nome e cognome 46

persona.php (Figura 31): come si è visto, con la ricerca è possibile trovare dei risultati che non interessano. È in questa pagina che si visualizzano tutti i dati disponibili della persona selezionata. Rispetto alla precedente pagina dei risultati, sono presenti maggiori informazioni sulla nascita (paese, provincia e stato) e viene reso visibile il codice fiscale. Inoltre se la persona è deceduta, vengono dati i dettagli sulla data di morte e dove è avvenuta, se la persona è emigrata in un altro comune italiano si rendono noti la data e il paese dello spostamento, se la persona è iscritta all A.I.R.E. verranno visualizzati la data e lo stato di trasferimento. Infine se il livello dell utente è superiore al livello base, vengono resi noti il numero e la data di scadenza della carta d identità, sempre che la persona abbia diritto a possederla. Anche qui, come nella pagina dei risultati, vengono filtrati i valori che non hanno significato; nucleo.php (Figura 32): questa pagina è stata creata per dare la possibilità di visualizzare tutti i componenti dello stesso nucleo familiare. A questa pagina ci si accede cliccando sul nome e cognome nella pagina contenente i dettagli della persona. La struttura della pagina è come quella della pagina dei risultati, dove le persone sono visualizzate per mezzo di una tabella nella quale non vengono visualizzati dati senza significato. L unica differenza è che in testa alla pagina non si rendono noti i criteri della ricerca, ma a chi appartiene il nucleo: nel caso di una famiglia, viene visualizzato il nominativo della persona della quale precedentemente abbiamo visualizzato i dettagli, nel caso di una convivenza in casa di riposo, viene visualizzato il nome dell edificio; Figura 31: pagina Web per la visualizzazione dei dettagli della persona 47

Figura 32: pagina Web per la visualizzazione del nucleo familiare ricerca_cf.php e risultati_cf.php (Figura 33 e Figura 34): queste due pagine si presentano in modo molto simile alle pagine utilizzate per la ricerca tramite nome e cognome. Per la ricerca, la form che si visualizza contiene il campo per l inserimento del codice fiscale e i campi per l ordinamento. Anche qui l inserimento di una stringa come codice fiscale viene controllato: non deve contenere caratteri speciali, spazi, deve essere composta da almeno 3 caratteri e non deve superare i 16 e deve rispettare la sintassi di tutti i codici fiscali (6 lettere, 2 numeri, 1 lettera, 2 numeri, 1 lettera, 3 numeri, 1 lettera). I risultati sono visualizzati in una tabella come per la ricerca con nome e cognome, con la sola aggiunta che viene visualizzato pure il codice fiscale; Figura 33: pagina Web per l'operazione di ricerca del codice fiscale 48

Figura 34: pagina Web per la visualizzazione dei risultati dell'operazione di ricerca del codice fiscale ricerca_ci.php e risutlati_ci.php (Figura 35 e Figura 36): a queste pagine possono avere accesso solo gli utenti superiori al livello base. Queste due pagine sono uguali alle precedenti con la sola differenza che al posto del codice fiscale si avrà il numero della carta d identità. Anche qui l inserimento di una stringa come numero di carta d identità viene controllato: non deve contenere caratteri speciali e spazi, deve essere composta da almeno 2 caratteri e non deve superare i 20 (in verità le carte d identità attuali sono formate da 9 caratteri, ma si pensa che la sintassi possa cambiare con l introduzione delle carte d identità elettroniche). I risultati sono visualizzati in una tabella come per le precedenti ricerche, con la sola aggiunta che viene visualizzato il numero della carta d identità e la rispettiva scadenza; Figura 35: pagina Web per l'operazione di ricerca della carta d'identità 49

Figura 36: pagina Web per la visualizzazione dei risultati dell'operazione di ricerca della carta d'identità gestione.php e risultati_gestione.php (Figura 37): queste due pagine sono utilizzate solamente dagli utenti amministratori che ne hanno accesso per gestire gli altri utenti. Sono possibili tre operazioni: l inserimento di un ente esterno o di un utente comunale con un livello superiore a quello base, la disattivazione di un utente esterno e la rispettiva riattivazione. L inserimento si differenzia in base al tipo di utente che viene inserito: un ente esterno necessita di username, password, descrizione e livello, che non sarà mai di tipo amministratore, mentre per un utente di dominio c è bisogno solo di username e del livello che sarà sempre superiore a quello base, dato che gli utenti comunali del livello più basso, possono accedere al servizio senza esser registrati nel database (username e password vengono controllati che non siano nulli e che non contengano spazi). La disattivazione è solo per enti esterni e basta inserire lo username e la password. Analoga è la riattivazione per gli utenti esterni disattivati. Sempre in questa pagina, in modo totalmente trasparente, viene effettuato il controllo di scadenza su tutte le password degli enti esterni. La pagina dei risultati segnala se l operazione è andata a buon fine oppure no. Un inserimento per avere successo non deve inserire nel database un utente con stesso username, e password nel caso di un ente esterno. Una disattivazione e una riattivazione deve esser effettuata solamente per utenti esterni che esistono sul database, indipendentemente dallo stato di validità nei quali si trovano. Ogni operazione viene registrata nella tabella LOG: inserito per un inserimento, disattivato per una disattivazione e riattivato per una riattivazione; 50

Figura 37: pagina Web per la gestione degli utenti statistiche.php (Figura 38): un altra sezione dedicata solamente agli amministratori. Qui è possibile avere visione delle ultime 100 operazioni registrate nella tabella LOG: si potranno visualizzare orari di operazioni di accesso, inserimento, disattivazione, riattivazione e cambio di password riferiti a uno specifico utente (username e descrizione) ; cambio.php e risultati_cambio.php (Figura 39): queste due pagine sono dedicate al cambio della password per gli utenti esterni. Questa operazione è resa possibile sia che la password sia già scaduta che ancora valida. Il cambio è consentito solamente agli enti esterni: nella form si dovrà specificare lo username, la vecchia password, la nuova password e confermarla. Vengono anche qui controllati che i valori inseriti nei campi non siano vuoti e siano privi di spazi, e che la nuova password e la conferma coincidano. Nella pagina di risultati si procederà a ricercare nella tabella UTENTI l utente per mezzo dello username e della password inseriti, aggiornare la password solamente se non è stato disattivato da un amministratore e inserire nella tabella LOG l operazione effettuata. 51

Figura 38: pagina Web per la visualizzazione degli accessi effettuati Figura 39: pagina Web per l'operazione di cambio password per gli enti pubblici esterni 4.5. Stampe formattate Spesso, nella realizzazione di pagine Web, può sfuggire al programmatore che queste possono essere stampate, con il risultato di visualizzare testi non ordinati, immagini molto dettagliate che sarebbe più conveniente non stampare, menù o link (ad esempio pubblicità) che non interessano all utente che ha avviato la stampa. Il servizio Anagrafe on-line vuole cercare di risolvere questi problemi. In particolare si vuole visualizzare all inizio della prima pagina un intestazione con delle informazioni sul Comune di Cento e alla fine dell ultima dei dettagli per il trattamento dei dati nel rispetto della privacy. Tra queste due parti si possono visualizzare i dettagli di un 52

particolare utente, i risultati di una ricerca, la lista delle operazione effettuate dai vari utenti, ecc. In pratica non si deve effettuare la stampa del menù di navigazione. Per queste stampe si utilizzano i CSS, procedendo in due passi: definire nei diversi script che il foglio di stile che viene indicato ha come destinazione la stampante, cioè il media print, come riportato in Figura 40; disabilitare nel foglio di stile tutti i tag, div e form con le rispettive proprietà e definire nuovamente solo quelli utili per ottenere la stampa desiderata, come riportato in Figura 41. La stampa assume quindi l aspetto della Figura 42. Figura 40: codice PHP per specificare il CSS utilizzato dalla stampante Figura 41: disattivazione dei tag da non visualizzare con un CSS Figura 42: formato di una stampa 53