Il 0% ha trovato utile questo documento (0 voti)
221 visualizzazioni21 pagine

Prima Parte: Ministero Dell'istruzione, Dell' Università e Della Ricerca

Il documento descrive un progetto per realizzare un servizio multimediale per la fruizione di contenuti su punti di interesse culturali di una città. Il servizio prevede pagine web con video e immagini accessibili tramite dispositivi forniti in loco. Vengono descritte le caratteristiche dei contenuti, le tariffe e le funzionalità richieste come l'accesso solo nei pressi dei punti di interesse.

Caricato da

Ti Rispondo Io
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
221 visualizzazioni21 pagine

Prima Parte: Ministero Dell'istruzione, Dell' Università e Della Ricerca

Il documento descrive un progetto per realizzare un servizio multimediale per la fruizione di contenuti su punti di interesse culturali di una città. Il servizio prevede pagine web con video e immagini accessibili tramite dispositivi forniti in loco. Vengono descritte le caratteristiche dei contenuti, le tariffe e le funzionalità richieste come l'accesso solo nei pressi dei punti di interesse.

Caricato da

Ti Rispondo Io
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 21

Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 1

Prof. Mauro De Berardis Teramo

Ministero dell’Istruzione, dell’ Università e della Ricerca

ESAME DI STATO DI ISTRUZIONE SECONDARIA SUPERIORE


Indirizzo: ITIA - INFORMATICA E TELECOMUNICAZIONI
ARTICOLAZIONE INFORMATICA
Tema di: INFORMATICA e SISTEMI E RETI

Il candidato svolga la prima parte della prova e due tra i quesiti proposti nella seconda parte.

PRIMA PARTE
Per favorire il turismo culturale, l’Assessorato al Turismo di una città d’arte di medie dimensioni intende realizzare
un’infrastruttura tecnologica che offra ai visitatori un servizio per la fruizione di contenuti multimediali che descrivono i
“punti di interesse” (Point Of Interest = POI) di tipo monumentale (es. chiese, luoghi storici, …) e artistico (es. musei,
mostre, …) distribuiti nel centro storico della città.
Per il servizio, si è deciso di erogare i contenuti multimediali sotto forma di pagine web, secondo due possibili formati
denominati “pagina multimediale di base” e “pagina multimediale avanzata”.
Nella pagina multimediale di base sono previsti:
 un video di presentazione breve del POI della durata tipica di un minuto esclusivamente in italiano con sottotitoli
in inglese;
 un massimo di tre immagini relative al POI (es. dettagli architettonici, quadri, ...) con relativa didascalia in
italiano ed inglese.
Nella pagina multimediale avanzata sono previsti:
 un video di presentazione approfondita del POI della durata tipica di cinque minuti in una fra 7 possibili lingue
compreso l’italiano;
 una galleria di una ventina di immagini con relativa descrizione (tipicamente intorno ai 500 caratteri) in una fra 7
possibili lingue compreso l’italiano.
Il visitatore, acquistando il servizio in uno dei chioschi (InfoPoint) dislocati nella città, riceverà un biglietto con cui potrà
avere accesso ai due tipi di pagina sulla base di tre possibili tariffe:
 “tariffa base”: permette la fruizione di una pagina multimediale di base per ciascun POI;
 “tariffa intermedia”: consente la fruizione di pagine multimediali avanzate per tre POI a scelta dell’utente e
pagine di base per gli altri;
 “tariffa piena”: consente la fruizione di pagine multimediali avanzate per ogni POI della città.
Il biglietto acquistato riporta la password di accesso ai contenuti, univoca per ciascun visitatore, associata al tipo
di tariffa pagata e con validità giornaliera.
In relazione alle funzionalità che il servizio dovrà offrire, l’Assessorato richiede che siano soddisfatti i seguenti
vincoli progettuali:
 la consultazione delle pagine multimediali sia abilitata esclusivamente ai dispositivi (minitablet) forniti all’atto
dell’acquisto del biglietto, previa consegna di un documento di identità o di un numero di carta di credito valida;
 per facilitare l’aggiornamento periodico dei contenuti esistenti e l’inserimento di nuovi, gli stessi non siano
memorizzati sui dispositivi utilizzati dagli utenti ma su sistemi server;
 l’accesso alle pagine multimediali sia effettuabile solo dopo l’inserimento, all’inizio della visita, della password
presente nel biglietto;
 l’accesso alle pagine multimediali relative ad un POI debba avvenire solo in prossimità o all’interno del POI
stesso;
 la restituzione dei dispositivi (minitablet) possa avvenire presso l’InfoPoint che ha in custodia il documento di
identità oppure presso un qualsiasi InfoPoint se il visitatore ha optato per lasciare il numero di carta di credito
valida.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 2
Prof. Mauro De Berardis Teramo

Il candidato analizzi la realtà di riferimento e, fatte le opportune ipotesi aggiuntive, individui una soluzione che a suo
motivato giudizio sia la più idonea a sviluppare i seguenti punti:
1. il progetto, anche mediante rappresentazioni grafiche, dell’infrastruttura tecnologica ed informatica necessaria a
gestire il servizio nel suo complesso, dettagliando:
a) l’architettura della rete e le caratteristiche del o dei sistemi server, motivando anche la scelta dei luoghi in cui
installare questi ultimi;
b) le modalità di comunicazione tra server e dispositivi consegnati ai visitatori, descrivendo protocolli e servizi
software da implementare per gestire la rete e fornire le pagine;
c) gli elementi dell’infrastruttura utili a limitare la fruizione delle pagine multimediali esclusivamente in prossimità o
all’interno dei POI a cui si riferiscono;
2. il progetto della base di dati per la gestione del servizio sopra descritto: in particolare si richiedono il modello
concettuale ed il corrispondente modello logico;
3. la progettazione delle pagine web che consentono all’utente, in possesso di biglietto con tariffa base, la fruizione dei
contenuti multimediali relativi al POI presso cui si trova, codificandone una porzione significativa in un linguaggio a
scelta;
4. l’analisi di massima delle possibili modalità di gestione delle tre fasce tariffarie, delle opzioni offerte all’utente per la
scelta dei tre POI nel caso della tariffa intermedia, e della scelta della lingua nel caso delle tariffe intermedia e piena.

SECONDA PARTE
Il candidato risponda a due quesiti a scelta tra quelli sotto riportati.

I. In relazione al tema proposto nella prima parte, si vuole offrire ai visitatori la possibilità di inserire via web un
commento ed un voto di gradimento su ogni POI visitato. Effettuata a tale scopo una opportuna integrazione della base
di dati, si realizzi, codificandola in un linguaggio a scelta, una pagina web che consente la visualizzazione della media
dei voti ricevuti da ciascun POI.

II. In relazione al tema proposto nella prima parte, si discuta la possibilità di allargare la fruizione dei contenuti
multimediali anche ai dispositivi personali degli utenti. In particolare, si analizzino le seguenti due ipotesi alternative:
 uso limitato ai soli dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto, come sopra descritto: si
individuino possibili soluzioni per impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti
dagli InfoPoint;
 uso consentito ai dispositivi personali degli utenti (es. smartphone): si descriva una possibile integrazione del
servizio volta a consentire la fruizione dei contenuti direttamente ad un singolo dispositivo di proprietà del
visitatore, pur mantenendo i vincoli di fruibilità in base alla tariffa associata al biglietto.

III. Nella realizzazione e gestione di una base di dati accessibile da categorie di utenti con differenti ruoli, sono di
rilevante importanza gli aspetti relativi alla sicurezza dei dati. Ad esempio, si supponga che nella realtà scolastica il
personale della “Segreteria Alunni” non debba accedere ai dati del personale docente, il personale della “Segreteria
Docenti” non debba accedere all’elenco dei fornitori della scuola, ecc. Il candidato approfondisca la tematica proposta
discutendo gli strumenti offerti dai sistemi DBMS per creare utenze che abbiano un accesso libero alla totalità dei dati o
limitato a parte di essi, in termini di operazioni consentite, in base al ruolo ricoperto nell’organizzazione. Produca quindi
esempi significativi, nel contesto proposto della segreteria scolastica, nel linguaggio fornito dal DBMS di sua
conoscenza.

IV. Per le aziende che dispongono di sedi dislocate in varie località sorge spesso la necessità di consentire al personale
l’accesso ai sistemi da postazioni remote. Il candidato discuta le tipologie e i protocolli di accesso remoto ai sistemi,
indicando in particolare le possibilità offerte dalle connessioni VPN. Sviluppi poi esempi nel caso di una azienda che ha
due sedi operative e agenti commerciali che, muovendosi sul territorio, hanno necessità di collegarsi al sistema
informativo aziendale.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 3
Prof. Mauro De Berardis Teramo

Soluzione prima parte


Il candidato analizzi la realtà di riferimento e, fatte le opportune ipotesi aggiuntive, individui una soluzione che a suo
motivato giudizio sia la più idonea per sviluppare i seguenti punti:
1. il progetto, anche mediante rappresentazioni grafiche, dell’infrastruttura tecnologica ed informatica necessaria a
gestire il servizio nel suo complesso, dettagliando:
a) l’architettura della rete e le caratteristiche del o dei sistemi server, motivando anche la scelta dei luoghi in
cui installare questi ultimi;
b) le modalità di comunicazione tra server e dispositivi consegnati ai visitatori, descrivendo protocolli e servizi
software da implementare per gestire la rete e fornire le pagine;
c) gli elementi dell’infrastruttura utili a limitare la fruizione delle pagine multimediali esclusivamente in
prossimità o all’interno dei POI a cui si riferiscono;

La prima parte riguarda la progettazione di una piattaforma digitale, web based, per la fruizione di contenuti informativi
dell'offerta turistica del centro storico di una città d'arte di medie dimensioni. L'infrastruttura di rete necessaria riguarda:
 il server che fornisce i contenuti informativi sui singoli punti di interesse e gestisce la piattaforma
 i punti di interesse (POI), chiese, castelli, palazzi storici, musei, eventi ecc.., oggetto dell'offerta turistica
 i chioschi (InfoPoint), in cui i turisti possono acquistare i servizi di fruizione dei contenuti multimediali relativi ai POI
Per quel che riguarda il server, prendiamo in considerazione 3 alternative:
1. utilizzare un Data Center costruito e gestito internamente dal Comune
2. gestire la piattaforma attraverso un portale e facendo ricorso ad una soluzione hosting tradizionale
3. affidarsi ad un Server cloud, ovvero a risorse e servizi forniti tramite Internet da un Provider
Analizzando le varie soluzioni, possiamo fare le seguenti considerazioni:
a) L'utilizzo di un Data Center interno garantisce il pieno controllo su dati e applicazioni ma richiede un
investimento iniziale elevato per l'acquisto e la configurazione del server e necessita di personale tecnico
informatico specializzato. Inoltre richiede notevoli costi annuali per la connessione DSL a larga banda, per la
manutenzione e l'upgrade dell'hardware e del software e per garantire la sicurezza informatica;
b) L’hosting tradizionale è una soluzione poco costosa ma adatta per ospitare esclusivamente siti con un traffico
non elevato;
c) L'utilizzo di un Server Cloud richiede che all'interno della struttura comunale sia presente una figura
professionale in grado di amministrare da remoto un sistema informativo complesso. Inoltre non consente la
possibilità di intervenire immediatamente in casi di guasti hardware e software: bisogna aprire un ticket di
assistenza e aspettare l'intervento del provider. Ma garantisce diversi e importanti vantaggi:
 virtualizzazione dei sistemi in ambiente GNU/Linux open source su una infrastruttura dedicata
 pieno controllo e possibilità di gestione effettuando tutte le configurazioni che si ritengono necessarie
 nessun investimento iniziale e costi annuali complessivi sostenibili
 elevati livelli di sicurezza informatica grazie ad un'architettura distribuita e ridondata
 gradualità degli investimenti: possibilità di richiedere al Provider nuovi servizi o prestazioni più performanti
man mano che crescono le esigenze o di modulare le risorse a seconda del fabbisogno
 totale scalabilità
Tra le 3 alternative, si sceglie la soluzione Cloud in quanto le tecnologie di virtualizzazione e l’hardware proposti dai
fornitori di servizi Cloud garantiscono affidabilità, scalabilità, flessibilità ed elevata sicurezza informatica e permettono di
contenere i costi di esercizio. Un Web Server Apache, interfacciato con DB MySql e installato sul Server Cloud,
fornisce tramite protocollo HTTPS le pagine web di base ed avanzate a cui accedono i visitatori, dialogando con i POI e
gli InfoPoint per la gestione delle tariffe e dei servizi da erogare.
I POI sono equipaggiati da un modem/router/access point per connettere i minitablet dei visitatori, via wireless, alla rete
Internet e consentire la fruizione dei contenuti multimediali. In alternativa, ciascun minitablet potrebbe essere dotato di
connettività LTE/4G con evidenti vantaggi di semplificazione dell'infrastruttura ma allo stesso tempo con pesante
aggravio dei costi di gestione.
Gli InfoPoint, oltre a fornire le informazioni turistiche, devono stampare e consegnare ai visitatori i biglietti e
contestualmente, "previa consegna di un documento di identità o di un numero di carta di credito valida", i minitablet Per
questo motivo in ciascun InfoPoint, la consegna di biglietti e dispositivi sarà gestita da un operatore mentre i servizi di
informazione turistica avanzati (elenco e descrizione sintetica dei POI, mappe, indicazione di percorsi, contenuti
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 4
Prof. Mauro De Berardis Teramo

multimediali, ecc..) verranno forniti, in diverse lingue, da un totem interattivo con touchscreen. Gli InfoPoint sono
dislocati in alcuni punti strategici del centro storico, presumibilmente nelle vicinanze dei POI più importanti e frequentati
dai visitatori.
POI ed InfoPoint sono connessi ad Internet tramite l'infrastruttura di rete cittadina, wireless e cablata, a larga banda già
esistente e basata sull'utilizzo di fibra ottica, con connettività FTTH (Fiber to the Home con velocità di trasmissione sia
in download che in upload fino a 1 GBit/sec).
La scelta della fibra ottica, peraltro sempre più competitiva in termini di costi, è necessaria per assicurare una
connettività adeguata ad un servizio a pagamento, basato su pagine web che presentano contenuti multimediali
"pesanti" e che presumibilmente in alcuni POI e in determinate occasioni viene fruito contemporaneamente da un
numero elevato di utenti.
InfoPoint

POI
Web Server
Internet DB MySql
POI Rete fibra ottica

router / access point


InfoPoint
InfoPoint
Rete Wifi
SSID e WPA2
POI
Infrastruttura di rete

Il minitablet che viene fornito in dotazione agli utenti che hanno acquistato il servizio è equipaggiato con SO Android e
si connette automaticamente alla rete WiFi nella quale si trova in quel momento, grazie al fatto che su di esso sono
"salvate" le reti WiFi (SSID e password) di tutti i POI del centro storico ed è impostata l'opzione "Attiva WiFi
automaticamente".
Sul minitablet è installata un'app dedicata che presenta la mappa del centro storico con i marker dei vari punti di
interesse e, attraverso il dialogo con il server, gestisce il servizio; inoltre è settato con un account ospite e un profilo
molto limitato che, per motivi di sicurezza e privacy, consentono di usare esclusivamente l'app dedicata e impediscono
di modificare le impostazioni di sistema. L'app del minitablet è dunque il cuore del servizio per la fruizione di contenuti
multimediali relativi ai POI e, poiché i visitatori che la utilizzano provengono verosimilmente da diverse parti del mondo, è
localizzata nelle lingue più importanti e diffuse.
Il sistema proposto si basa su un'architettura client-server, nella quale il dispositivo client Android scambia dati con il
Db MySql attraverso script PHP lato Server. Per realizzare il collegamento agli script PHP si utilizza il protocollo HTTP
dal sistema Android, per lo scambio dei dati si utilizza preferibilmente il formato JSON (JavaScript Object Notation).

richiesta HTTP script PHP


risposta
(preferibimenteJSON)
Client Internet (www) DB MySql
android Web Server
Riguardo alla soluzione del quesito c ("gli elementi dell’infrastruttura utili a limitare la fruizione delle pagine multimediali
esclusivamente in prossimità o all’interno dei POI a cui si riferiscono"), si risponderà al punto 3, dopo aver definito il
progetto della base dei dati.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 5
Prof. Mauro De Berardis Teramo

2. il progetto della base di dati per la gestione del servizio sopra descritto: in particolare si richiedono il modello
concettuale ed il corrispondente modello logico;

Modello concettuale Diagramma E/R

dataora password telefono


id ndispositivo email
tariffa id nome
emette id acquista
nazione
infopoint biglietto visitatore
1 n n 1 città

poi3 poicorrente linguascelta documento


nome indirizzo poi2 ncartacredito
poi1
id latitudine url flag
longitudine id datacaricamento
illustrato
nome
poi immaginebase
indirizzo 1 n
1
didascaliaita didascaliaing

illustrato datacaricamento
id url flag
descrizione
id url datacaricamento
id url
datacaricamento n n immagineavanzata lingua
n
flag
flag videobreve videolungo
lingua

Lettura del diagramma E/R


 Ogni Infopoint emette n biglietti, ciascun biglietto è emesso da un InfoPoint
 Ogni visitatore acquista n biglietti, ciascun biglietto è acquistato da un visitatore
 Ogni POI è illustrato da n immagini base, ciascuna immagine base illustra un POI
 Ogni POI è illustrato da n immagini avanzate, ciascuna immagine avanzata illustra un POI
 Ogni POI è illustrato da n video brevi, ciascun video breve illustra un POI
 Ogni POI è illustrato da n video lunghi, ciascun video lungo illustra un POI

Ipotesi di lavoro
Per semplicità:
 di ciascuna entità sono presi in considerazione solo gli attributi più significativi e utili per la soluzione del tema
proposto
 non si prendono in considerazione le tabelle nazioni e città relative al visitatore che acquista il biglietto e la
tabella lingue relativa alle lingue utilizzate per immagini avanzate e video lunghi
Note
a) l'attributo flag di immagini, sia base che avanzate, viene valorizzato a 1 o a 0 a seconda se l'immagine è
"abilitata" o "disabilitata" ad illustrare il POI. In tal modo l'amministratore del sistema, quando vuole utilizzare
nuove immagini per illustrare un POI, non deve cancellare quelle precedenti e può conservare lo storico delle
immagini per un eventuale riutilizzo. Stesso discorso vale per l'attributo flag di video, sia brevi che lunghi
b) l'attributo tariffa dell'entità biglietto può assumere esclusivamente i valori: B (base), I (intermedia), P (piena). Se
si seleziona la tariffa I si possono inserire i codici dei tre POI (poi1, poi2, poi3) scelti per la visualizzazione di
pagine multimediali avanzate
c) i video brevi integrano l'audio in italiano e i sottotitoli in inglese, i video lunghi integrano l'audio in ciascuna delle
7 lingue previste (ciascun video lungo viene memorizzato con parlato in lingua diversa)
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 6
Prof. Mauro De Berardis Teramo

Modello logico
infopoint biglietti poi immaginibase immaginiavanzate
id PK id PK id PK id PK
id PK url url
nome nome
dataora flag flag
indirizzo indirizzo
ndispositivo datacaricamento datacaricamento
latitudine
password didascaliaita descrizione
longitudine
visitatori tariffa didascaliaing lingua
id PK linguascelta idpoi FK idpoi FK
nome poi1
telefono poi2
email poi3 videobrevi videolunghi
città poicorrente FK id PK id PK
nazione idinfopoint FK url url
documento idvisitatore FK flag flag
ncartacredito datacaricamento datacaricamento
idpoi FK lingua
idpoi FK

3. la progettazione delle pagine web che consentono all’utente, in possesso di biglietto con tariffa base, la fruizione dei
contenuti multimediali relativi al POI presso cui si trova, codificandone una porzione significativa in un linguaggio a
scelta;
Come già detto, il minitablet in dotazione del visitatore è equipaggiato con SO Android e si connette automaticamente
alla rete WiFi nella quale si trova in quel momento: un'app dedicata preinstallata gestisce il servizio di fruizione delle
pagine multimediali, dialogando con Il Server Web.
Al primo accesso, il visitatore, una volta selezionata la lingua dell'app e dei contenuti, introduce la password ricevuta
all'atto dell'acquisto del biglietto: se la password è valida e la data di emissione, che risulta nella tabella biglietti, è
uguale a quella corrente, viene "loggato".
Se la tariffa prescelta è quella intermedia, seleziona, cliccando sui marker della mappa, i 3 POI per cui richiede la
fruizione di contenuti multimediali avanzati. La tariffa, la lingua selezionata ed eventualmente i tre POI a scelta,
vengono memorizzati, tramite script PHP, nella riga della tabella 'biglietti' individuata tramite la password.
La password, introdotta al primo accesso, rimane valida per l'intera giornata grazie all'utilizzo del meccanismo delle
sessioni.
Una volta effettuato il login e le impostazioni legate alla tariffa, l'app visualizza sulla mappa la posizione del visitatore e
quella dei POI più vicini in maniera tale che il visitatore possa scegliere facilmente il POI che intende raggiungere
cliccando sul marker corrispondente nella mappa. Il codice del POI selezionato viene memorizzato sulla tabella biglietti
nel campo poicorrente.
Al fine di "limitare la fruizione delle pagine multimediali esclusivamente in prossimità o all’interno dei POI a cui si
riferiscono", la soluzione più economica è quella del controllo di coerenza tra le coordinate GPS del minitablet in
dotazione e le coordinate GPS del POI che si sta visitando. Il minitablet viene localizzato automaticamente e l'app si fa
carico di far fronte ai problemi di stabilità del segnale GPS: ad esempio, quando il segnale nei punti più interni degli
edifici non viene più ricevuto dal minitablet, l'app assume come coordinate le ultime ricevute.
Quando il visitatore si reca in un altro POI, lo seleziona sul minitablet cliccando sul corrispondente marker della mappa e
il processo di dialogo con il Server e di erogazione dei contenuti si ripete.
In alternativa al meccanismo basato sul GPS, si potrebbero utilizzare altre soluzioni che prevedono l'utilizzo di tag RFID
o bluetooth. Anche in questo caso il minitablet sarebbe localizzato automaticamente ma si presenterebbero problemi di
costo e problemi logistici dovuti alle distanze di funzionamento dei dispositivi.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 7
Prof. Mauro De Berardis Teramo

E' da sottolineare, comunque, che l'utilizzo dei tag RFID o bluetooth, è in forte sviluppo e costituisce una frontiera di
innovazione molto importate nelle applicazioni informatiche, dell'IoT (Internet of Things) in particolare.
Riguardo alla specifica funzionalità richiesta dalla traccia che "la consultazione delle pagine multimediali sia abilitata
esclusivamente ai dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto", si è detto che i minitablet sono
equipaggiati da un'app dedicata che non si può scaricare da uno store o da un sito pubblico. Questo garantisce che, pur
conoscendo la password, è complicato utilizzare dispositivi diversi da quelli forniti insieme al biglietto.
In ogni caso si interviene sugli access point che consentono il collegamento dei minitablet alla rete, impostando delle
regole di filtraggio basate sul mac address dei minitablet stessi. In altre parole, si imposta una lista di dispositivi (una
whitelist) che possono accedere alla rete. Se altri dispositivi con mac address non presenti nella whitelist tentano di
accedere, vengono bloccati. In diversi access point commerciali l'impostazione di whitelist risulta agevole grazie ad
appositi software di controllo che permettono di configurare facilmente decine di access point distribuiti in luoghi diversi,
anche attraverso una rete geografica WAN. Il filtraggio tramite mac address è una misura di sicurezza aggiuntiva a
quelle dei protocolli di sicurezza WEP, WPA e WPA2 dello standard IEEE 802.11 che impediscono la connessione di
terze parti alla rete e criptano i dati inviati attraverso di essa.
Riguardo alla codifica, per tutto quanto detto finora e per affrontare le tante problematiche proposte dalla situazione di
riferimento e dalle richieste della traccia, il software dell'applicazione appare complesso e molto esteso. In particolare
dovremmo scrivere:
a) lato Server gli script PHP in grado di:
1. connettersi al DB MySql
2. eseguire le query per recuperare e/o scrivere, modificare i dati delle tabelle, a seconda delle richieste
HTTP del client Java Android
3. fornire i risultati (preferibilmente in formato JSON se si tratta di dati di una certa complessità)
b) lato client Java Android il codice in grado di:
1. inviare le richieste HTTP al Server
2. prendere in input, tramite la classe BufferedReader, i dati ricevuti
3. fare eventualmente il parsing dei dati JSON ricevuti
4. visualizzare le pagine web
Come esempio, rivolto agli studenti che hanno le competenze di base riguardanti la programmazione Android, ho
sviluppato il codice per effettuare su un dispositivo mobile il login del visitatore tramite l'autenticazione della password
sul DataBase MySql remoto. . Si tratta di un codice molto essenziale, ma spero utile, che può essere esteso senza
particolari difficoltà concettuali a problematiche più complesse.

Richiesta HTTP per controllo password

Risposta
Internet Web Server

Query controllo password

Client Android
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 8
Prof. Mauro De Berardis Teramo

Web Service PHP (login.php)


Utilizzando come ambiente di testing un sito web remoto (ma si potrebbe utilizzare un server locale tipo WAMP),
occorre creare il web service php che tramite una query verifica se la password richiesta dal client Java Android con il
metodo POST, esiste nella tabella "biglietti", e fornisce come risposta lo stato del login: 'true' se la password è stata
trovata, 'false' se la password non è stata trovata. In questo caso, per semplicità, poiché la risposta del server è molto
elementare, si evita di restituire i dati in formato JSON.
login.php
<?php
$conn=mysqli_connect("host","root","password","database");
if(!$conn) die('Non riesco a connettermi: '.mysqli_error());
if(isset($_POST['password']))
{
$password=$_POST['password'];
//parametro passato da Android tramite richiesta HTTP
$s="select password from biglietti where password=md5('$password')";
$q=mysqli_query($conn,$s);
$nr=mysqli_num_rows($q);
if($nr>0)
{
$risposta ="true";
}
else
{
$risposta = "false";
}
echo $risposta;
}
mysqli_close($conn);
?>

Progetto Android
Ho utilizzato l'ambiente di lavoro Android Studio e nel codice Java ho inserito molti commenti.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 9
Prof. Mauro De Berardis Teramo

1) Impostazione di due permessi aggiuntivi nel file AndroidManifest.xml


<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

2) activity_main.xml (Text e Design)


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="Login"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:textSize="30sp" />

<EditText
android:id="@+id/password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="35dp"
android:background="#dddddd"
android:ems="5"
android:focusable="true"
android:focusableInTouchMode="true"
android:hint="Password"
android:inputType="textPassword"
android:textColorHighlight="#ff7eff15"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
tools:textSize="24sp" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="47dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="10dp"
android:background="@color/colorPrimary"
android:onClick="cLogin"
android:paddingTop="5dp"
android:paddingRight="20dp"
android:paddingLeft="20dp"
android:paddingBottom="5dp"
android:text="Accedi"
android:textColor="@color/colorAccent"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password"
tools:paddingLeft="20dp" />

<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="50dp"
app:layout_constraintEnd_toEndOf="parent"
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 10
Prof. Mauro De Berardis Teramo

app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
app:srcCompat="@drawable/duomo" />

<Button
android:id="@+id/Button2"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="Chiudi app"
android:onClick="Chiudi"
android:textSize="18sp"
android:layout_marginTop="90dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/imageView"
tools:textSize="18sp" />*/

</android.support.constraint.ConstraintLayout>

3) activity_succes.xml (Text e Design)


<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
tools:layout_editor_absoluteY="81dp">

<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="106dp"
android:layout_marginBottom="51dp"
android:text="Login eseguito"
android:textSize="24sp"
app:layout_constraintBottom_toTopOf="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:textSize="24sp" />

<TextView
android:id="@+id/textView2"

android:layout_width="0dp"
android:layout_height="0dp"
android:layout_marginStart="37dp"
android:layout_marginLeft="37dp"
android:layout_marginEnd="37dp"
android:layout_marginRight="37dp"
android:layout_marginBottom="49dp"
android:text="Benvenuto a Teramo"
android:textSize="32sp"
app:layout_constraintBottom_toTopOf="@+id/button"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView1"
tools:textSize="32sp" />

<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="83dp"

android:paddingLeft="20dp"
android:paddingTop="5dp"
android:paddingRight="20dp"
android:paddingBottom="5dp"
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 11
Prof. Mauro De Berardis Teramo

android:onClick="Back"
android:text="Torna al Login"
app:layout_constraintBottom_toTopOf="@+id/textView3"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textView2"
tools:paddingLeft="20dp" />

<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="77dp"
android:onClick="MySite"
android:text="link sito maurodeberardis.it"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/button"
tools:textSize="18sp" />

</android.support.constraint.ConstraintLayout>

4) Modifica di strings.xml
<resources>
<string name="app_name">Assessorato Turismo Teramo</string>
</resources>

5) MainActivity.java
package it.maurodeberardis.loginandroidphp;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.content.SharedPreferences;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

public static final int CONNECTION_TIMEOUT=10000; //millisecondi


public static final int READ_TIMEOUT=15000;//millisecondi
private EditText vPassword;

@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// il metodo findViewById()permette di recuperare
// il riferimento alla passord nell’interfaccia utente

vPassword = (EditText) findViewById(R.id.password);


vPassword.requestFocus();

}
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 12
Prof. Mauro De Berardis Teramo

public void cLogin(View arg0) //Si attiva sull'evento onClick di Button (pulsante di login)
{

// Ottiene il testo dal campo passord


final String password = vPassword.getText().toString();

// Initializza la classe AsyncLogin() con il valore della password


new AsyncLogin().execute(password);
}
public void Chiudi(View arg0) //Si attiva sull'evento onClick su "Chiudi app")
{

this.finish();

private class AsyncLogin extends AsyncTask<String, String, String>


{
/*
Occorre utilizzare una classe asincrona con 3 tre parametri <Void, Void, Void>:
1) i parametri da utilizzare nel metodo doInBackground, in questo caso la password da
passare in POST a login.php
2) I valori ad un eventuale progress bar
3) l'insieme dei dati di ritorno dalla classe, in questo caso la risposta 'true' o 'false' da
parte del server */

ProgressDialog pdLogin = new ProgressDialog(MainActivity.this);


HttpURLConnection connessione;
URL url = null;

//Prima che il task sia eseguito...


@Override
protected void onPreExecute() {

pdLogin.setTitle("Login in corso!");
pdLogin.setCancelable(false);
pdLogin.setIndeterminate(true);
pdLogin.show();
}
/* nel thread in background: in questa fase, invocata subito dopo onPreExecute(),
avviene il dialogo client android-server php tramite la classe HttpURLConnection*/
@Override
protected String doInBackground(String... params) {
try
{ //url del server php, in questo caso il server remoto
url = new URL("http://www.maurodeberardis.it/xxxxxxxx/xxx/login.php");
}
catch (MalformedURLException e)
{
e.printStackTrace();
return "eccezione";
}
try {
// Impostazione della classe HttpURLConnection
connessione = (HttpURLConnection)url.openConnection();
connessione.setReadTimeout(READ_TIMEOUT);
connessione.setConnectTimeout(CONNECTION_TIMEOUT);
connessione.setRequestMethod("POST");
connessione.setDoInput(true); // Imposta la connessione a ricevere i dati
connessione.setDoOutput(true);// Imposta la connessione a trasmettere i dati
// Aggiunge i parametri all'URL, in questo caso la password
Uri.Builder b = new Uri.Builder();
b.appendQueryParameter("password", params[0]);
String query = b.build().getEncodedQuery();
// Utilizza uno stream di output per trasmettere i dati
OutputStream output = connessione.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(output, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
output.close();
connessione.connect();
}
catch (IOException e1)
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 13
Prof. Mauro De Berardis Teramo

{
e1.printStackTrace();
return "exception";
}

try {

int response_code = connessione.getResponseCode();


// Verifica se la connessione è stata stabilita correttamente e, utilizzando uno
// stream di input, legge i dati
// inviati dal server Php
if (response_code == HttpURLConnection.HTTP_OK)
{
InputStream input = connessione.getInputStream();
BufferedReader lettura = new BufferedReader(new InputStreamReader(input));
StringBuilder risposta = new StringBuilder();
String linea;
while ((linea = lettura.readLine()) != null) {
risposta.append(linea);
}
return(risposta.toString());

}else{
// se, ad esempio, si verifica un errore sul Server Php
return("problemi");
}

} catch (IOException e) {
e.printStackTrace();
return "eccezione";
} finally {
connessione.disconnect();
}

@Override
protected void onPostExecute(String risposta) {

//Chiudiamo l'eventuale ProgressBar


if (pdLogin.isShowing()) {
pdLogin.dismiss();
}

if(risposta.equalsIgnoreCase("true"))
{
// Se la password è corretta e login.php restituisce il risultato "true"
Intent intent = new Intent(MainActivity.this,Success.class);
startActivity(intent);
MainActivity.this.finish();

}else if (risposta.equalsIgnoreCase("false")){

// Se la password non esiste in tabella biglietti e login.php restituisce il risultato "false"


Toast.makeText(MainActivity.this, "Password non corretta", Toast.LENGTH_LONG).show();
} else if (risposta.equalsIgnoreCase("problemi") || risposta.equalsIgnoreCase("eccezione")) {
Toast.makeText(MainActivity.this, "Qualcosa non ha funzionato.", Toast.LENGTH_LONG).show();

}
}

}
}
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 14
Prof. Mauro De Berardis Teramo

6) Success.java
package it.maurodeberardis.loginandroidphp;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class Success extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_success);

}
public void Back(View arg0) //Si attiva sull'evento onClick di Button (pulsante di Torna al login)
{
Intent intent = new Intent(this,MainActivity.class);
startActivity(intent);
Success.this.finish();
}
public void MySite(View arg0) //Si attiva sull'evento onClick sul weblink)
{
Intent intent = new Intent(Intent.ACTION_VIEW,Uri.parse("http://www.maurodeberardis.it"));
startActivity(intent);

}
}

Test dell'applicazione
Per il test dell'applicazione sopra descritta (app Android + Server Php), ho utilizzato come client Android uno
smartphone con schermo da 5.1 " e ho realizzato il server Php MySql sul mio sito www.maurodeberardis.it.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 15
Prof. Mauro De Berardis Teramo

1) Se inserisco una password corretta

2) Se inserisco una password non corretta 3) Se, ad esempio, si verifica un errore sul Server Php

Scrivere codice Android non è semplice e credo inoltre che in molte realtà scolastiche la programmazione Android non
sia ancora trattata in modo adeguato.
Si ipotizza pertanto che, per sviluppare il quesito 3 ("la progettazione delle pagine web che consentono all’utente, in
possesso di biglietto con tariffa base, la fruizione dei contenuti multimediali relativi al POI presso cui si trova,
codificandone una porzione significativa in un linguaggio a scelta"), la visualizzazione dei contenuti non sia gestita
dall'app sul minitablet ma interamente da codice php (contenuti.php) lato server. La stessa esemplificazione sarà
adottata nello svolgimento dei quesiti successivi.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 16
Prof. Mauro De Berardis Teramo

contenuti.php
<?php // server:localhost username:root password:mypassword database:db_poi
session_start();
if(isset($_SESSION["password"]))
{
$password=$_SESSION["password"];
$visitatore=$_SESSION["visitatore"];
}
else
{
die("effettuare il login");
}
?>
<!DOCTYPE html>
<head><title> Esame di Stato 2019 Informatica-Sistemi e Reti </title></head>
<style> td {border:1px solid #888888}</style>
<body>
<?php
$conn=mysqli_connect("localhost","root","mypassord","db_poi");
if(!$conn) die('Non riesco a connettermi: '.mysqli_error());

// Dalla password risalgo al biglietto e quindi alla tariffa da applicare e al


// campo poicorrente, ovvero il POI che si sta visitanto
$s="select * from biglietti inner join poi
on biglietti.poicorrente=poi.id
where biglietti.password=md5('$password')";
$q=mysqli_query($conn,$s);
$r=mysqli_fetch_array($q);
$codicepoi=$r['poicorrente']; //il codice POI che si sta visitando
$tariffa=$r['tariffa']; // la tariffa associata al biglietto
$nomepoi=$r['nome']; //il nome del POI che si sta visitando
$indirizzopoi=$r['indirizzo']; //l'indirizzo del POI che si sta visitando
$codlingua=$r['linguascelta'];// il codice della lingua scelta. Per semplicità evitiamo di usare
// una tabella. Ad esempio linguascelta=1 è italiano, linguascelta=2 è inglese e così via

echo "<h1>Assessorato al Turismo - Teramo</h1>";


echo "<h2>Visitatore: $visitatore - Tariffa: $tariffa</h2>";
echo "<h2 style='color:#dd0000'>$nomepoi - $indirizzopoi</h2>";

//gestione fasce tariffarie----------------------------------------------------------


if($tariffa=='B')
{

/* Nella pagina multimediale di base sono previsti:


a) un video di presentazione breve del POI della durata tipica di un minuto solo in
italiano con sottotitoli in inglese;
b) un massimo di tre immagini base relative al POI con didascalia in italiano ed inglese.
*/

/* si selezionano al massimo tre immagini base e abilitate (flag=1)


relative al POI che si sta visitando.
Se le immagini base abilitate relative al POI sono più di tre si scelgono le tre più recenti
*/
$s="select * from immaginibase
where idpoi=$codicepoi and flag=1
order by datacaricamento desc limit 0,3";
$q=mysqli_query($conn,$s);
while($r=mysqli_fetch_array($q))
{
$didascaliaita=$r['didascaliaita'];
$didascaliaing=$r['didascaliaing'];
$url=$r['url'];
echo "<p><img src='$url'></p><p>$didascaliaita</p><p>$didascaliaing</p>";
}
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 17
Prof. Mauro De Berardis Teramo

/* si seleziona 1 video breve e abilitato (flag=1) relativo


al POI che si sta visitando. La lingua del video è italiano, i sottotitoli sono in
inglese. Audio e sottotitoli sono integrati nel video stesso.
Se i video brevi abilitati e relativi al POI sono più di uno si sceglie quello più recente
*/
$s="select * from videobrevi
where poi=$codicepoi and flag=1
order by datacaricamento desc
limit 0,1";
$q=mysqli_query($conn,$s);
while($r=mysqli_fetch_array($q))
{
$url=$r['url'];
echo "<p><video width='640' height='480' controls><source src='$url' type='video/mp4'></p>";

}
}
//
// gestione delle altre 2 fasce tariffarie-------------------------------------------
//
mysqli_close($conn);
?>
</body>
</html

Test del codice (limitato a due immagini)


Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 18
Prof. Mauro De Berardis Teramo

4. l’analisi di massima delle possibili modalità di gestione delle tre fasce tariffarie, delle opzioni offerte all’utente per la
scelta dei tre POI nel caso della tariffa intermedia, e della scelta della lingua nel caso delle tariffe intermedia e piena.
Le modalità di gestione delle tre fasce tariffarie sono strettamente legate al modello concettuale e al modello logico della
base dei dati. Il codice di "contenuti.php" riportato nel punto precedente e sviluppato, come richiesto dalla traccia, per
consentire la fruizione dei contenuti multimediali previsti per la tariffa base, lascia intuire come estendere facilmente il
codice al fine di gestire anche le altre due fasce tariffarie.
Per quel riguarda la scelta dei tre POI nel caso della tariffa intermedia e della scelta della lingua nel caso delle tariffe
intermedia e piena, si è detto che tali impostazioni vengono effettuate all'atto del login. Esse possono essere modificate
in ogni momento: cambiare la lingua è semplice perché si tratta di aggiornare il campo linguascelta della tabella biglietti,
campo che viene letto ogni volta che deve visualizzare una pagina di contenuti con contenuti che prevedono una tariffa
differente da quella Base. Anche la modifica dei tre POI della tariffa intermedia non presenta difficoltà elevate ma
richiede che si tenga conto dei POI scelti e già visitati.
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 19
Prof. Mauro De Berardis Teramo

Soluzione seconda parte


I. In relazione al tema proposto nella prima parte, si vuole offrire ai visitatori la possibilità di inserire via web un
commento ed un voto di gradimento su ogni POI visitato. Effettuata a tale scopo una opportuna integrazione della base
di dati, si realizzi, codificandola in un linguaggio a scelta, una pagina web che consente la visualizzazione della media
dei voti ricevuti da ciascun POI.

Per rispondere al quesito occorre integrare il modello concettuale e il modello logico della base dei dati nel seguente
modo:
Integrazione Modello concettuale Diagramma E/R

telefono
acquista id latitudine longitudine
id nome email commenta

nome
visitatore n n poi
indirizzo

documento nazione voto


città dataora
commento
ncartacredito

Ogni visitatore commenta e vota n POI, ogni POI è commentato e votato da n visitatori

Integrazione Modello logico

visitatori
id PK commenta poi
nome id PK id PK
telefono dataora nome
email commento indirizzo
città voto latitudine
nazione idvisitatore FK longitudine
documento idpoi FK
ncartacredito
commenta è una
tabella di link

Il codice PHP (mediavoti.php) che consente la visualizzazione della media dei voti ricevuti da ciascun POI è, in forma
molto essenziale, il seguente:

<?php // server:localhost username:root password:mypassword database:db_poi ?>


<!DOCTYPE html>
<head>
<title> Esame di Stato 2019 Informatica-Sistemi e Reti </title>
</head>
<style> td {border:1px solid #888888;padding:5px}</style>
<body>
<?php
$conn=mysqli_connect("localhost","root","mypassword","db_poi");
if(!$conn) die('Non riesco a connettermi: '.mysqli_error());
echo "<h1>Assessorato al Turismo - Teramo</h1>";
echo "<h2>Media dei voti ricevuti da ciascun Punto di interesse</h2>";
// attraverso una query si stampa una tabella con la media dei voti ricevuti
// da ciascun POI, dal più votato al meno votato
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 20
Prof. Mauro De Berardis Teramo

$s="SELECT poi.nome,poi.indirizzo,round(avg(voto),2)
from poi,commenta
where poi.id=commenta.idpoi
group by poi.id
order by avg(voto)Desc";
$q=mysqli_query($conn,$s);
echo "<table>
<tr bgcolor='#ffff00'>
<td style='font-weight:bold'>Nome POI</td>
<td style='font-weight:bold'>Indirizzo</td>
<td style='font-weight:bold'>Media voti</td>
</tr>";
while($r=mysqli_fetch_array($q))
{
echo "<tr>
<td>$r[0]</td>
<td>$r[1]</td>
<td style='text-align:center'>$r[2]</td>
</tr>";
}
mysqli_close($conn);
?>
</body>
</html>

Test del codice


(Voti da 1 a 5 stelle)
Soluzione della seconda prova scritta di Informatica e Sistemi e Reti dell'Esame di Stato 2018- 2019 21
Prof. Mauro De Berardis Teramo

II. In relazione al tema proposto nella prima parte, si discuta la possibilità di allargare la fruizione dei contenuti
multimediali anche ai dispositivi personali degli utenti. In particolare, si analizzino le seguenti due ipotesi alternative:
 uso limitato ai soli dispositivi (minitablet) forniti all’atto dell’acquisto del biglietto, come sopra descritto: si
individuino possibili soluzioni per impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti
dagli InfoPoint;
 uso consentito ai dispositivi personali degli utenti (es. smartphone): si descriva una possibile integrazione del
servizio volta a consentire la fruizione dei contenuti direttamente ad un singolo dispositivo di proprietà del
visitatore, pur mantenendo i vincoli di fruibilità in base alla tariffa associata al biglietto.

Il problema di impedire l’accesso alle pagine multimediali attraverso dispositivi non forniti dagli InfoPoint è stato già
affrontato nella prima parte. In sintesi:
a) il funzionamento complessivo della soluzione proposta si basa su un'app precaricata su ciascun minitablet che
non si può scaricare da un sito pubblico; è dunque difficile utilizzare dispositivi diversi da quelli ricevuti in
dotazione
b) "ad abundantiam" gli access point delle reti WiFi consentono di selezionare i dispositivi che accedono alla rete
tramite il filtraggio dei mac address (protezione MAC)

Se si vuole consentire l'uso dei dispositivi personali degli utenti, mantenendo i vincoli di fruibilità in base alla tariffa
associata al biglietto, occorre:
1. rinunciare al filtraggio dei dispositivi tramite mac address
2. consentire di scaricare sul dispositivo personale, da uno store pubblico (ad esempio il sito del Comune) e in
modo riservato (utilizzando la password ricevuta all'atto dell'acquisto del biglietto), l'app dedicata
3. utilizzare un captive portal che permetta di autenticare i visitatori, ad esempio tramite un Server Radius: la
password di autenticazione potrebbe essere fornita all'atto dell'acquisto del servizio ed essere la stessa
utilizzata per la fruizione delle pagine multimediali

Potrebbero piacerti anche