Sei sulla pagina 1di 14

Guida all'Utilizzo del Programma per Amministratore

Concetti di base:
Nella realizzazione del programma sono stati utilizzati sostanzialmente quattro linguaggi ognuno deputato ad una diversa funzione: HTML per la struttura delle pagine Javascript per la programmazione lato Client PHP per la programmazione lato Server MySQL per la gestione del Database contenente i dati sui controlli Prima di analizzare con maggiore dettaglio il funzionamento del programma bene spiegare come operano PHP e Javascript. PHP (il nome un acronimo ricorsivo che sta per PHP: Hypertext Preprocessor) viene definito come linguaggio di scripting ed stato inizialmente concepito per la costruzione di pagine HTML dinamiche. In realt non detto che fornisca un output HTML quindi possiamo vederlo come un linguaggio di programmazione lato server. Le pagine PHP sono caratterizzate dall'avere estensione .php e, al loro interno, il codice PHP (che pu essere annidato all'interno di codice HTML o Javascript) viene racchiuso all'interno dei tag <? codice PHP ?> o anche <?php codice PHP ?>. Ogni volta che al Server viene richiesta una pagina con estensione PHP, prima di inviarla al Client, questa viene aperta dall'interprete PHP alla ricerca dei tag definiti prima e il codice da questi delimitato viene valutato e poi, se richiesto, genera output HTML. L'HTML pu essere generato direttamente tramite l'istruzione echo html o indirettamente dalle funzioni richiamate se queste generano errore. Il codice PHP non visibile al Client: aprendo il sorgente di una di queste pagine attraverso il Browser quello che viene visualizzato solo il codice HTML della pagina php, se presente. La sintassi del PHP del tutto simile a quella di Java e Javascript, l'unico accorgimento che le variabili devono necessariamente iniziare tutte col dollaro ($). In pi queste non hanno tipo: una stringa contenente un numero pu tranquillamente essere utilizzata come un numero. Uno dei linguaggi con cui PHP pu interfacciarsi il MySQL utilizzato per gestire il Database dei Controlli. La sintassi la stessa di Microsoft SQL, solo che MySQL open source. Ogni volta che uno script PHP necessita di eseguire delle operazioni sul Database deve chiedere al Web Server di connettersi al Server MySQL specificando il proprietario del processo Server, il nome e la password dell'utente che si vuole connettere a MySQL. Generalmente infatti questo DBMS (DataBase Management System) possiede un insieme di utenti (definiti dall'amministratore del Server) con permessi diversi sugli archivi. Tuttavia questi parametri vengono inseriti in fase di sviluppo e non riguardano quindi l'utente finale. La funzione per connettersi a MySQL mysql_connect(localhost,utente_mysql,psw_mysql) e restituisce una connessione,

quindi all'interno del codice questa funzione si presenta come: $conn=mysql_connect(localhost,utente_mysql,psw_mysql); Da notare che, come per tantissimi altri linguaggi di programmazione, ogni istruzione termina con il punto e virgola. Una volta definita la connessione bisogna selezionare il database da utilizzare con quella connessione attaraverso la funzione mysql_select_db che non restituisce nulla. Chiamandosi Controlli il Database su cui opera il programma, la funzione all'interno del codice viene cos utlizzata: mysql_select_db(Controlli,$conn); A questo punto possibile eseguire le query sul database attaverso la funzione mysql_query. Supponendo che all'interno della variabile $query ci sia la nostra interrogazione, la funzione prende questa forma: $ris=mysql_query($query,$conn); nella variabile $ris viene introdotto il risultato della query o false se la query non riuscita. Si pu anche indicare un messaggio da fornire all'utente (attraverso l'HTML) nel caso in cui la query non riuscisse per qualche motivo. $ris=mysql_query($query,$conn)ordie(Querynonriuscita); cos, oltre ad avere false in $ris, l'utente viene anche avvisato del problema. Effettuate tutte le operazioni sul DataBase la connessione deve essere chiusa: mysql_close($conn); L'introduzione di Javascript all'interno del programma dovuta solo ad un fatto di ottimizzazione, si scelto cio di interpellare il Server solo nel momento in cui i dati risultano accettabili e possono essere scritti sul DataBase essendo questo l'unico motivo per il quale l'applicazione sfrutta la rete, cio quella di avere un database condiviso da tutte le postazioni. Quindi, prima di inviare il dati al Server, ne viene controllata la validit dal Client stesso attraverso Javascript. In generale un campo non risulta valido quando il suo valore attribuibile ad un errore d'inserimento da parte dell'utente piuttosto che ad un malfunzionamento della macchina. All'interno dell'HTML le istruzioni Javascript sono racchiuse fra i tag <script> e </script> e possono essere organizzate in funzioni richiamabili dagli eventi associati ai componenti dei moduli. Ad esempio per i bottoni abbiamo l'evento onClick, per i campi di selezione abbiamo l'evento onChange (che si verifica quando viene cambiato l'elemento selezionato nel campo) e per i moduli abbiamo onSubmit. Per moduli si intende l'insieme dei campi da compilare che verranno inviati poi

come dati al Server. Questo insieme non noto a priori ma deve essere dichiarato all'interno dei tag <form> e </form>. Associando un nome attraverso l'attributo name possibile poi inserire pi form all'interno della stessa pagina. Dovendo infine inviarne i valori al Server bisogna specificare anche una pagina di destinazione (che sapr come processare i dati) e la modalit con cui questi dati verranno inviati. La pagina di destinazione viene definita attraverso l'attributo action mentre la modalit di invio attraverso method. Abbiamo a disposizione due modalit: POST e GET. POST la meno versatile ma anche la pi sicura delle due in quanto i parametri vengono passati invisibilmente all'utente. GET invece utilizza la query string, cio la parte terminale dell'url successiva al ? dove vengono scritti i campi come coppia variabile=valore separati dal carattere & (detta e commerciale). La versatilit di questo metodo quella di poter anche forzare la query string, ad esempio con un link che punta alla pagina prova.php? var1=val1&var2=val2 cos alla pagina php arriveranno le variabili var1 e var2 settate rispettivamente a val1 e val2 senza che l'utente abbia immesso niente. In questo modo possiamo anche creare una form che utilizza il metodo POST per passare i campi, ma che punti tramite il campo action ad un indirizzo con una query string preimpostata. Per recuperare i valori nella pagina di destinazione si utilizzano i vettori associativi $_GET e $_POST. Il nome vettori associativi significa che le posizioni al loro interno non sono indicizzate necessariamente da un numero ma anche da parole. Questo vuol dire che, riferendoci all'esempio sopra dell'url prova.php?var1=val1&var2=val2, nella pagina prova.php potremo accedere alle due variabili con le due posizioni del vettore: $_GET['var1'], dove troveremo il valore 'val1', e $_GET['var2'] , dove troveremo il valore 'val2'. Prima di vedere un semplice esempio bene vedere come sia possibile inserire dei commenti all'interno del codice in ognuno dei tre linguaggi. Per commenti si intende delle frasi ignorate dall'interprete (cio alla parte del computer che poi esegue il codice) che vengono utilizzate per spiegare cosa viene eseguito attraverso il codice ad un ipotetico lettore o come promemoria personale. In HTML i commenti sono delimitati dai tag <!-- e --> mentre in php e Javascript, esattamente come avviene per Java, i commenti iniziano con // se occupano una sola riga mentre iniziano con /* e finiscono con */ se occupano pi righe (in alternativa si pu anche far iniziare ogni riga con //, ma piuttosto scomodo). Vediamo ora un esempio di una pagina HTML contenente due form distinte, ognuna delle quali soggetta al controllo in invio sui suoi campi, il cui contenuto verr poi inviato ad una pagina TellMe.php che visualizzer un messaggio dipendente dal contenuto dei campi stessi e dal modulo di provenienza. Facciamo si che la prima contenga una casella di testo e la seconda una di selezione con due valori: testa e croce.

<html> <!quellochedentroilprossimotagvienevisualizzatonellabarradel titolodelbrowser> <title> PaginaconleForm </title> <body><!ilcorpodellapagina> <formname='moduluno'action='TellMe.php?mod=1'method=POST onSubmit='returnverificuno();'> <inputtype=textname=testosize=15> <inputtype=submitvalue='Inviaquesto!'> </form> <br><!conbrilbrowservaacapo> <formname='moduldue'action='TellMe.php?mod=2'method=POST onSubmit='returnverificdue();'> <selectname=selezione> <!creiamoun'opzionedidefault> <optionvalue=0selected=selected>scegli</option> <!poileopzionitestaecroce> <optionvalue=testa>testa</option> <optionvalue=croce>croce</option> </select> <inputtype=submitvalue='Inviaquesto!'> </form> </body> </html> <script> //eoralefunzioniinjavascript functionverificuno(){ /*glielementivannosempreindicaticonNomeForm.NomeComponente anchenelcasoincuicisiaunaformsola*/ if(moduluno.testo.value==''){ /*setestocontieneunastringavuotaavvertel'utenteconil seguentemessaggiod'errore*/ alert('nonhaiscrittonulla'); //poi,restituendofalse,bloccal'invio returnfalse; } } functionverificdue(){ //vienecontrollatoseilvalorenellacaselladiselezionelo //stessodiquellodidefault if(moduldue.selezione.value==0){ alert('nonhaiselezionatonulla'); returnfalse; } } </script>

Quello che otteniamo :

Non inserendo niente genera un messaggio d'errore come quello sotto

Per quanto riguarda la pagina PHP di destinazione che si chiama TellMe.php


<?php if($_GET['mod']==1){ /*inphplestringhesiconcatenanocol.nonconil+comein JavaeJavascript*/ echo'haiusatoilprimomoduloscrivendo'.$_POST[testo]; } if($_GET[mod]==2){ echo'haiusatoilsecondomoduloscegliendo'.$_POST[selezione]; } ?>

Per ulteriori risorse fare riferimento ai siti: www.html.it contiene guide al HTML, PHP, Javascript e MySQL. www.php.net, sito ufficiale di PHP nel quale si pu reperire anche la documentazione tradotta (non integralmente) in italiano www.javascriptkit.com/jsref contiene una documentazione NON ufficiale ma molto ricca su Javascript Per la corretta visione delle pagine del programma si consiglia l'utilizzo di versioni di Internet Explorer non inferiori alla 7, qualora si escluda l'utilizzo di qualsiasi browser alternativo. Questo perch, fino alla versione 6, questo browser supporta solo parzialmente il formato aperto per le immagini PNG, standard W3C (l'ente che formalizza gli standard per le pagine internet) gi dal 1997, creato dalla W3C stessa per risolvere i problemi di brevetti che si stavano creando attorno al formato GIF.

Diagramma relazionale del DataBase

L'archivio composto in tutto da cinque tabelle. La tabella operatori non strettamente legata a nessun'altra, fondamentalmente contiene solo l'elenco delle persone che hanno il permesso di registrare i controlli o amministrare il sistema. Per ognuno viene registrato nome utente, la password e il nome completo. Ci che viene riutilizzato poi nelle tabelle dei controli solo il nome completo (o firma), ma non essendo una chiave primaria non pu partecipare alle relazioni. Una chiave primaria un attributo (gli attributi sarebbero pi semplicemente le colonne) o insieme di attributi della tabella che caratterizzano univocamente una tupla (cio una riga o un record) della tabella. Il concetto di chiave primaria sar probabilmente pi chiaro dopo aver analizzato le tabelle del database Controlli. Nella definizione dei campi delle tabelle le chiavi primarie sono sottolineate.

CNR
Campo Tipo varchar(10) int(10) tinyint(3) smallint(5) smallint(5) tinyint(3) float(6,2) float(4,2) float(4,2) float(5,2) float(5,2) varchar(30) tinyint(1)

Tabella contenente i controlli di Riproducibilit (SNR) e CNR. In maniera analoga a tutte le altre tabelle la chiave primaria costituita dall'Inventario e dalla Data. Infatti volendo tenere memoria di un solo controllo al giorno per una macchina (cio per quella macchina in quella data esiste solo un controllo) evidente come questa coppia individui univocamente il controllo. Il campo Esito un numero binario a due bit dove la cifra pi significativa rappresenta il'esito per l CNR, quella meno significativa per l'SNR.

Inv Data Potenziale Carico Forza Spessore MediaAl StdAl StdPMMA CNR

Anodo-Filtro varchar(7)

Esposizione smallint(5)

MediaPMMA float(6,2)

La cifra settata a 1 significa che il valore SNR interno agli estremi di tolleranza. Operatore
Esito

Compensazione
Tabella contenente i controlli di Compensazione. In questo caso, dovendo registrare tre tuple per ogni controllo, lo spessore del fantoccio entra a far parte della chiave primaria. Questo valore non viene inserito dall'utente ma aggiunto direttamente dal programma. Cos in controllo composto da tre righe, una per ogni spessore:30, 50 e 70 mm. Il campo Esito un numero binario che rappresenta l'esito di ogni spessore.
Campo Inv Data Fantoccio Potenziale Carico Anodo-Filtro Forza Spessore Tipo varchar(10) int(11) tinyint(4) tinyint(4) smallint(5) varchar(6) smallint(5) tinyint(4) smallint(6) varchar(30) tinyint(1)

Esposizione La cifra settata a 1 significa che il valore interno Operatore agli estremi di tolleranza. Esito

Giornalieri
Tabella contenente i controlli Giornalieri. In maniera analoga a tutte le altre tabelle la chiave primaria costituita dall'Inventario e dalla Data. Infatti volendo tenere memoria di un solo controllo al giorno per una macchina (cio per quella macchina in quella data esiste solo un controllo) evidente come questa coppia individui univocamente il controllo.
Campo Inv Data Potenziale Carico Anodo-Filtro Forza Spessore Tipo varchar(10) int(11) tinyint(4) smallint(5) varchar(6) smallint(5) tinyint(3) smallint(6) varchar(30) tinyint(1)

l campo Esito un numero binario che, Esposizione settato a 1, indica che il valore interno Operatore agli estremi di tolleranza. Esito

Mammografi
Tabella contenente la lista dei Mammografi. Questa costituita in modo da contenere tutti i dati d'interesse comprese le impostazioni di rete per i mammografi digitali in modo da avere una risorsa da sfruttare nel caso queste impostazioni
Campo Inv Prod Mod Tipo CdC Tipo varchar(10) varchar(20) varchar(20) varchar(2) smallint(5)

Matricola varchar(15)

Reparto

varchar(30) varchar(15) smallint(6)

HostName varchar(20)

debbano essere ripristinate.

IP Porta

Operatori
Nella tabella degli operatori stato scelto il nome utente come Campo chiave primaria fra le tante soluzioni possibili, tutte equipollenti. User Non stata scelta la firma in modo da supportare l'omonimia o PSW da dare la possibilit ad singolo operatore di avere pi account . Firma
Tipo varchar(12) varchar(40) varchar(30)

E adesso alcune considerazioni sul dimensionamento dei campi. Le stringhe sono tutte di tipo varchar e fra parentesi viene specificata il numero massimo di lettere che la stringa pu contenere. I valori numerici non interi sono tutti di tipo float, fra parentesi viene indicato il numero di cifre intere e decimali. Per gli interi come Potenziale e Carico necessario fare un discorso a parte in quanto esistono pi tipi di interi che differiscono per la dimensione. Abbiamo allora: tinyint=1 byte (massimo numero rappresentabile: 255) smallint=2 byte (massimo numero rappresentabile: 65535) mediumint=3 byte (massimo numero rappresentabile: 16777215) int=4 byte (massimo numero rappresentabile: 4294967295) bigint=5 byte (massimo numero rappresentabile: 1099511627775)

per tutti i campi interi sono stati utilizzati i tinyint per ottimizzare la dimensione del DataBase. A questa regola fanno eccezione solo tre campi: i campi Carico e Forza sono stati estesi in un secondo momento al formato smallint dopo aver notato che per al volte i valori inseriti superavano quello massimo, il campo Data, essendo un timestamp, richiede 4 byte. Il timestamp rappresenta il numero di secondi trascorsi dal primo gennaio 1970 ad oggi ed una variabile Unix utilizzata in tutti i sistemi. Si preferito salvare in questo modo la data piuttosto che come stringa perch, oltre a risultare pi facilmente gestibile ( sicuramente pi facile ordinare delle date se messe come numeri interi piuttosto che spiegare al computer come interpretare delle stringhe per poi ordinarle), in una stringa ogni carattere occupa un byte (in una data ci sono 10 caratteri).

Operazioni eseguibili attraverso il programma:


Cancellazione e Modifica dei Controlli Cancellazione, Modifica ed Inserimento dei Mammografi Cancellazione ed Inserimento degli Operatori Modifica del proprio account

vediamole con maggiore dettaglio.

Cancellazione e Modifica dei Controlli 1. Selezioniamo nel men a sinistra la voce Consultazione. Si aprir una pagina contenente diverse caselle di selezione. Se non selezionato selezionare Controlli dalla serie di link in alto a sinistra. 2. Selezioniamo il tipo di controllo e poi a scelta, per restringere il campo di ricerca, il Numero d'Inventario, Operatore, la data d'inizio e quella di fine. Se si vuole che questi dettagli vengano ignorati mantenerli su -Scegli- per le caselle di selezione mentre le date vanno lasciate o reimpostate a GG/MM/AAAA. Prestare attenzione al fatto che le ricerche effettuano l'AND fra i campi quindi, se da un lato si circoscrive la ricerca, dall'altro aumentano e possibilit che non fornisca alcun risultato. 3. Lanciando la ricerca appaiono un'insieme di controlli accompagnati dal nome dell'operatore che li ha eseguiti e due icone:

la prima si utilizza per la modifica, la seconda per la cancellazione.

Modifica: viene aperto un modulo che carica in automatico tutti i valori inseriti dall'operatore. La modifica permessa su tutti i campi ad esclusione di Numero d'Inventario, Data (essendo identificativi del controllo non possono essere modificati) e Operatore (viene lasciato quello dell'operatore che lo ha effettuato la prima volta). Effettuata la modifica viene ripresentata la pagina in cui si trovava il controllo, mostrando i nuovi valori del controllo stesso come responso positivo. Cancellazione: cliccando sul cestino viene aperta una richiesta di conferma generata attaverso Javascript (funzione confirm('msg'); piuttosto che alert('msg');). Confermando il controllo sparisce dall'elenco, annullando non succede nulla.
Attraverso questa ricerca possibile anche, indirettamente, consultare la tabella Mammografi visto che ogni numero d'inventario collegato con un link all'anagrafica del mammografo che rappresenta.

Cancellazione e Modifica dei Mammografi 1. Selezioniamo nel men a sinistra la voce Consultazione. Si aprir una pagina contenente diverse caselle di selezione. Se non selezionato, selezionare Mammografi dalla serie di link in alto a sinistra. 2. Selezionare i valori desiderati fra quelli disponibili. Prestare attenzione al fatto che le ricerche effettuano l'AND fra i campi quindi, se da un lato si circoscrive la ricerca, dall'altro aumentano e possibilit che non

fornisca alcun risultato (ad esempio scegliendo un numero d'inventario e un produttore che non corrisponde a quella macchina). 3. Lanciando la ricerca appaiono un'insieme di mammografi accompagnati da due icone:

la prima si utilizza per la modifica, la seconda per la cancellazione.

Modifica: viene aperto un modulo che carica in automatico tutti i valori i dati della macchina. La modifica permessa su tutti i campi (questa intesa come correzione di un inserimento errato). Effettuata la modifica viene ripresentata la pagina in cui si trovava il mammografo, mostrando i nuovi dati del mammografo stesso come responso positivo. Se viene modificato il numero d'inventario, il programma lo modifica anche in tutti i controlli gi effettuati su di esso. Cancellazione: cliccando sul cestino viene aperta una richiesta di conferma generata attaverso Javascript (funzione confirm('msg'); piuttosto che alert('msg');). Confermando il mammografo sparisce dall'elenco, annullando non succede nulla. Cancellando un mammografo vengono cancellati anche i controlli ad esso associati. Inserimento dei Mammografi 1. Selezionare la voce Nuova Macchina dal men a sinistra. Si aprir un modulo contenente tutti i campi richiesti. 2. Inserire le informazioni nei campi cercando di ripetere con precisione i valori comuni ad altre macchine (Produttore, Modello, Reparto, CdC) per rendere efficace la ricerca. 3. Al termine dell'inserimento, il programma ne comunica l'esito con un messaggio d'errore (alert) se non stato possibile l'inserimento o con un responso positivo (riportato al di sopra del titolo Inserimento di un Nuovo Mammografo) se andato tutto a buon fine Cancellazione degli Operatori 1. Selezioniamo nel men a sinistra la voce Consultazione. Si aprir una pagina contenente diverse caselle di selezione. Se non selezionato selezionare Operatori dalla serie di link in alto a sinistra. 2. Selezioniamo dalla casella di selezione il nome dell'Operatore. Non selezionando nulla viene riportata la lista di tutti gli operatori 3. Lanciando la ricerca appare l'Operatore scelto (o tutti se non ne stato selezionato nessuno) accompagnato da un'icona

cliccandoci sopra viene aperta una richiesta di conferma generata attaverso Javascript (funzione confirm('msg'); piuttosto che alert('msg');). Confermando l'Operatore sparisce dall'elenco, annullando non succede nulla.

Inserimento di un Nuovo Operatore 1. Selezionare la voce Nuovo Operatore dal men a sinistra. Si aprir un modulo con i campi richiesti. 2. Una volta compilati i campi ed inviato il modulo, il programma comunica l'esito dell'inserimento con un messaggio d'errore (alert) se non stato possibile effettuarlo o con un responso positivo (riportato al di sopra del titolo Inserimento di un Nuovo Operatore) se andato tutto a buon fine.
N.M.B. Per inserire un nuovo amministratore inserire come nome e cognome la parola sudo in entrambi i campi. L'amministratore non ha identit certa e si distingue nelle tabelle dalla firma posta appunto pari a sudo (sarebbe stato pi corretto su, cio Super User, ma solo due lettere non mi piacevano quindi Super User DO). Mettendo entrambi i campi a sudo il programma recepisce la volont di creare un nuovo amministratore e ne setta la firma a sudo.

Modifica dell'Account
1. Selezioniamo Modifica Profilo nel Men di sinistra. Si aprir un modulo con i campi richiesti. 2. Inserire tutti i campi (anche quelli che non si vogliono modificare vanno reinseriti uguali a prima). Completata la modifica , il programma comunica l'esito dell'aggiornamento con un messaggio d'errore (alert) se non stato possibile effettuarlo o con un responso positivo (riportato al di sopra del titolo Modulo per la Modifica dei Dati d'Accesso dell'Amministratore) se andato tutto a buon fine.

Casi in cui il programma restituisce un errore:


Modifica dei Controlli Potenziale minore di 18kV o maggiore di 50kV Carico minore di 10 mAs o maggiore di 400 mAs Forza minore di 30N o maggiore di 400N Spessore minore di 20mm o maggiore di 40mm per il fantoccio da 30mm, minore di 40mm o maggiore di 60mm per il fantoccio da 50mm e spessore minore di 60mm o maggiore di 80mm per il fantoccio da 70mm Non stata selezionata una Combinazione Anodo-Filtro Indice di Esposizione minore di 200 o maggiore di 2500 Media delle ROI minore di 400 per il digitale o minore di 200 per l'analogico Media della ROI di alluminio maggiore di 1300 per il digitale e 2500 per l'analogico Media della ROI di plexiglass maggiore di 1400 per il digitale e 2500 per l'analogico Deviazione standard delle ROI minore di 5 o maggiore di 20 per il digitale e maggiore di 15 per l'analogico Valori letterali in campi in cui sono richiesti valori numerici. Anche l'utilizzo della virgola al posto del punto rientra in questa casistica. Consultazione: Una o entrambe le due date non sono corrette (es.: 29/07/2007; 32/08/2008; 25/08/08, l'anno va sempre a quattro cifre) Una o entrambe le due date contengono valori letterali (lettere, anche se mischiate a numeri) diverse da GG per il giorno, MM per il mese e AAAA per l'anno. Risultano diverse anche se si utilizza il minuscolo al posto del maiuscolo: gg per il giorno, mm per il mese o aaaa per l'anno non vanno bene! Invertire le due date. Modifica del proprio Profilo o Inserimento di un nuovo Operatore: Il nome utente scelto appartiene gi ad un altro utente. Essendo questo chiave primaria della tabella Operatori non possibile averne due uguali. La nuova password scelta appartiene gi ad un altro utente. E' una questione di sicurezza. Consideriamo la seguente situazione: abbiamo Flenghi Anna che ha come nome utente flenghia e password xyz. Arriva un nuovo tecnico che si chiama Fenghi Andrea che ha come nome utente fenghia e come password la stessa della signora Flenghi: xyz. Se un giorno, sbadatamente, la signora Flenghi salta la l nel suo nome utente, scrivendo quindi fenghia, ed immettesse correttamente la password, entrerebbe come Fenghi Andrea e non Flenghi Anna. La Password e la sua Conferma non coincidono. La Password Attuale inserita non corretta. I valori inseriti superano la dimensione massima ammessa.

Inserimento di un Nuovo Mammografo o Modifica di uno Esistente: Numero d'Inventario gi esistente. Essendo chiave primaria non pu essere ripetuto Valori inseriti di dimensione maggiore a quella ammessa. Campi vuoti Valori non numerici in campi numerici Indirizzo IP non corretto.

Procedure non esplicite e altri dettagli


Per sua natura, e per scelta, il programma non permette di fare tutto. Esistono alcune cose impossibili da fare. Una di queste il recupero della password di un operatore. Per ragioni di sicurezza queste password vengono salvate in forma criptata sul database per essere nota solo all'utente che la utilizza. In questo modo, se la password viene dimenticata, l'utente non pu pi accedere. Parallelamente il programma non permette la modifica dei dati dell'utente da parte dell'amministratore. Questa situazione lascia aperta un unica via: la cancellazione dell'utente e il suo successivo reinserimento con dati noti. Un'altra scelta stata quella di mantenere i ruoli dell'amministratore e dell'utente convenzionale ben separati. Questo significa che l'uno non pu svolgere le operazioni dell'altro e che quindi, se l'amministratore volesse registrare dei controlli di qualit, dovrebbe crearsi un utente completamente diverso. Inoltre anche le pagine di accesso sono diverse (in modo da rendere praticamente impossibile in intrusione per forza bruta da parte degli operatori). Gli indirizzi sono Utenti: http://mammo.auslrn.net/Controlli_Mammografi/Home.html Amministratori: http://mammo.auslrn.net/Controlli_Mammografi/SHome.html possibile anche modificare la struttura della tabella lavorando direttamente sul DataBase attraverso l'applicazione web phpMyAdmin recuperabile all'indirizzo: http://mammo.auslrn.net/phpmyadmin Alla richiesta di nome utente e password inserire root per il primo e mommo2008 per il secondo.