Sei sulla pagina 1di 104

[ELABORATO DI INFORMATICA]

ESAME DI MATURITA’ 2020/2021

STUDENTE: D’AURIA DAVIDE CLASSE:5 C


Elaborato di informatica | Davide d'Auria

1. Indice

Numero Pagina

1. Individuazione delle entità....................................................2


2. Modello Concettuale............................................................4
3. Ristrutturazione e traduzione................................................5
4. Modello Logico....................................................................7
5. Schema relazionale...............................................................8
6. Creazione tabelle..................................................................9
7. Inserimento dei record nelle tabelle....................................11
8. Query..................................................................................13
9. Query parte seconda...........................................................15
10.HTML E PHP.....................................................................17
11.La sicurezza delle reti.......................................................100

1
Elaborato di informatica | Davide d'Auria

La traccia prevede la realizzazione di un database per la gestione del personale


docente e degli studenti dell’Istituto Caruso di Napoli con le relative assegnazioni
alle rispettive classi ed il loro orario.
ENTITA’
Per poter rappresentare graficamente e modellare un concetto, concreto o astratto, del
mondo reale dobbiamo necessariamente individuare le entità, cioè degli insiemi di
elementi dotati di proprietà comuni.
Entità Studente
Rappresenta l’insieme degli studenti dell’istituto. Nonostante esistesse già un
attributo (matricola) che avrebbe potuto assumere il ruolo di chiave primaria, ho
preferito assegnare questo ruolo ad una chiave artificiale (ID_STUDENTE) che
permette una più rapida gestione dei dati grazie al suo carattere
dell’autoincrementalità.
Entità Classe
Rappresenta l’insieme delle classi dell’istituto. La sua chiave primaria è ID_classe.
Entità Docente
Rappresenta l’insieme dei docenti che insegnano nelle diverse classi dell’istituto. La
sua chiave primaria è ID_Docente.
Entità Materia
Rappresenta l’insieme delle materie insegnate dai docenti nelle diverse classi
dell’istituto. La sua chiave primaria è ID_Materia.

ASSOCIAZIONI

2
Elaborato di informatica | Davide d'Auria

Subito dopo aver individuato le entità e i relativi attributi bisogna individuare le


associazioni che le legano, identificando anche le molteplicità. Ogni associazione è
identificata mediante un verbo.
ASSOCIAZIONE STUDENTE-CLASSE (FREQUENTARE) la relazione tra le
due entità risulta essere di 1:N, in quanto ogni studente può frequentare al massimo
una singola classe e ogni classe è frequentata da più studenti.
ASSOCIAZIONE CLASSE-DOCENTE (INSEGNA) la relazione tra le due entità
è di N:N, poiché in ogni classe insegnano più docenti e ogni docente insegna in più
classi.
ASSOCIAZIONE DOCENTE-MATERIA (INSEGNA) la relazione tra le due
entità è nuovamente di N:N, poiché ad un docente è permesso di insegnare più
materie e viceversa una materia è insegnata da più docenti.

3
Elaborato di informatica | Davide d'Auria

MODELLO CONCETTUALE

4
Elaborato di informatica | Davide d'Auria

RISTRUTTURAZIONE E TRADUZIONE DELLO SCHEMA E-R

Una volta approntato il modello concettuale, si procede alla definizione del modello
logico dei dati, ossia nella realizzazione di uno schema più vicino alla
rappresentazione informatica dei dati.
Prima di procedere alla realizzazione dello schema relazionale è opportuno
ristrutturare lo schema concettuale. Questo avviene in 5 passi:
 Rimuovere le entità scollegate (nell’esercizio non erano presenti entità di
questo tipo);
 Unificare le entità associate da relazioni 1:1 (nell’esercizio non erano presenti
relazioni di questo tipo);
 Eliminare gli attributi composti (ho scomposto l’attributo indirizzo in
CAP, Numero.Civico e Via);
 Eliminare attributi multivalore (nell’esercizio non erano presenti attributi di
questo tipo);
 Eliminare le gerarchie e le specializzazioni (non erano presenti nell’esercizio.
Fatto questo è ora possibile passare alla fase di traduzione, che consiste in:
Trasformazione delle relazioni
 Trasformare relazioni complesse in relazioni binarie (non erano presenti
relazioni di questo tipo);
 Semplificare le relazioni N:N con l’introduzione di entità associative (a tale
scopo è stata realizzata l’entità Orario).
Trasformazione delle entità
 Ogni entità diventa una tabella;
 Ogni attributo diviene un campo di quella tabella.

5
Elaborato di informatica | Davide d'Auria

ASSOCIAZIONI POST-TRADUZIONE
ASSOCIAZIONE STUDENTE-CLASSE (FREQUENTARE), la relazione è
rimasta invariata.
ASSOCIAZIONE CLASSE-ORARIO (E’ CONTENUTA) la relazione tra le due
entità è di 1:N, poiché ogni classe è contenuta in più ore di lezione, tuttavia una
singola istanza di orario, dunque una specifica ora di lezione si riferisce ad una
singola classe;
ASSOCIAZIONE ORARIO-DOCENTE (E’ PRESENTE) la relazione tra le due
entità è di 1:N, poiché un docente può essere in più ore di lezione, mentre una
specifica ora di lezione si riferisce al massimo ad un singolo docente.
ASSOCIAZIONE MATERIA-DOCENTE (E’ INSEGNATA) la relazione tra le
due entità è di 1:N, poiché un materia viene insegnata in più ore di lezione, mentre in
una specifica ora di lezione può essere insegnata al massimo una singola materia.

6
Elaborato di informatica | Davide d'Auria

MODELLO LOGICO

7
Elaborato di informatica | Davide d'Auria

REALIZZAZIONE DELLO SCHEMA RELAZIONALE

CLASSE(ID_Classe(P.K),Nome)
DOCENTE(ID_Docente(P.K), Nome, Cognome, Via, Cap, Numero_Civico,
Data_Di_Nascita)
MATERIA(ID_Materia(P.K), Nome)
STUDENTE(ID_Studente(P.K), Nome, Cognome, Via, Cap, Numero_Civico,
Data_Di_Nascita, Matricola, id_classe(F.K))
ORARIO(ID_Orario(P.K), Ora_inizio, Ora_fine, Giorno, id_materia(F.K),
id_docente(F.K), id_classe(F.K))

8
Elaborato di informatica | Davide d'Auria

A partire da questo momento si passa all’implementazione delle tabelle su un


database. E lo faccio attraverso il linguaggio SQL (Structured query language), un
linguaggio messo a disposizione dal DBMS utile per interrogare e gestire basi di dati
mediante l'utilizzo di costrutti di programmazione.
CREAZIONE DELLE TABELLE

CREATE TABLE CLASSE (


ID_Classe INTEGER PRIMARY KEY AUTOINCREMENT,
Nome CHAR (2) NOT NULL
);

CREATE TABLE DOCENTE (


ID_Docente INTEGER PRIMARY KEY AUTOINCREMENT,
Nome VARCHAR(20) NOT NULL,
Cognome VARCHAR(20) NOT NULL,
Via VARCHAR(20) NOT NULL,
Cap CHAR(5) NOT NULL,
Numero_Civico INTEGER NOT NULL CHECK(Numero_Civico > 0),
Data_Di_Nascita DATE NOT NULL
);

CREATE TABLE MATERIA (


ID_Materia INTEGER PRIMARY KEY AUTOINCREMENT,
Nome VARCHAR(20) NOT NULL
);

9
Elaborato di informatica | Davide d'Auria

CREATE TABLE Studente (


ID_STUDENTE INTEGER PRIMARY KEY AUTOINCREMENT,
NOME VARCHAR(20) NOT NULL,
COGNOME VARCHAR(20) NOT NULL,
DATA_DI_NASCITA DATE NOT NULL,
VIA VARCHAR(20) NOT NULL,
CAP CHAR(5) NOT NULL,
Numero_Civico INTEGER NOT NULL CHECK(Numero_civico>0),
MATRICOLA CHAR(5) NOT NULL UNIQUE,
id_CLASSE INTEGER NOT NULL,
FOREIGN KEY id_CLASSE REFERENCES CLASSE(ID_CLASSE)
);

CREATE TABLE Orario (


ID_ORARIO INTEGER PRIMARY KEY AUTOINCREMENT,
ORA_INIZIO TIME(0) NOT NULL,
ORA_FINE TIME(0) NOT NULL,
GIORNO VARCHAR(9) NOT NULL,
id_MATERIA INTEGER NOT NULL,
id_DOCENTE INTEGER NOT NULL,
FOREIGN KEY id_MATERIA REFERENCES MATERIA(ID_MATERIA),
FOREIGN KEY id_DOCENTE REFERENCES DOCENTE(ID_DOCENTE)
);

10
Elaborato di informatica | Davide d'Auria

INSERIMENTO DEI RECORD NELLE TABELLE

INSERT INTO CLASSE(Nome) VALUES


("5C”),
(“2D”),
(“4C”),
(“1A”);

INSERT INTO DOCENTE(Nome, Cognome, Via, Cap, Numero_Civico,


Data_Di_Nascita) VALUES
("Antonio", "Bianchi", "Via Capodimonte", “80121”, 50, "02/03/1980"),
("Maurizio", "De Nino", "Via Roma", “80133”, 34, "24/07/1991"),
("Simona", "Lauro", "Via Scarlatti", “80231”, 31, "05/10/1995"),
("Rita", "Persico", "Via Duomo", “80117”, 92, "21/03/1974");

INSERT INTO MATERIA(Nome) VALUES


("Diritto pubblico"),
("Informatica"),
("Economia pubblica"),
("Italiano");

INSERT INTO STUDENTE(Nome, Cognome, Via, Cap, Numero_Civico,


Data_Di_Nascita, Matricola, id_classe) VALUES
("Luca", "Vecchione", "Via Stadera", “80141”, 80, "03/05/2002", "L0305", 1),

11
Elaborato di informatica | Davide d'Auria

("Davide", "D'Auria", "Via Rimini", “80143”, 67, "31/01/2003", "D3101", 2),


("Mario", "Rossi", "Via toledo", “80143”, 27, "30/02/2004", "E3101", 4),
("Mario", "Fossi", "Via toledo", “80143”, 29, "30/04/2004", "E4101", 3);

INSERT INTO ORARIO(Ora_inizio, Ora_fine, Giorno, id_materia, id_docente,


id_classe) VALUES
("8:00:00", "9:00:00", "Lunedì", 1, 2, 1),
("10:00:00", "11:00:00", "Mercoledì", 2, 1, 2),
("8:00:00", "9:00:00", "Giovedì", 4, 4, 3),
("10:00:00", "11:00:00", "Mercoledì", 3, 3, 4);

12
Elaborato di informatica | Davide d'Auria

QUERY
Elenco degli studenti della 5C
SELECT S.Cognome
FROM Studente AS S INNER JOIN Classe AS C
((ON S.id_CLASSE=C.ID_CLASSE)
AND (C.NOME =”5C”));

 Elenco dei Docenti della 5C


SELECT D.Cognome
FROM (Docente AS D INNER JOIN Orario AS O
(ON D.ID_Docente=O.id_Docente))
INNER JOIN Classe AS C
((ON C.ID_CLASSE=O.id_CLASSE)
AND (C.NOME =”5C”));

Elenco del numero di ore totali di ogni materia con il relativo nome del docente
SELECT M.nome, SUM(O.ORA_FINE-O.ORA_INIZIO) AS NUMERO_ORE,
D.Cognome
FROM (Materia AS M INNER JOIN Orario AS O
(ON M.ID_MATERIA=O.id_MATERIA))
INNER JOIN Docente AS D
(ON O.id_DOCENTE=D.ID_DOCENTE)
GROUP BY M.nome, D.Cognome;
*PRECISAZIONE: Ho effettuato il group by anche sul docente in modo tale che se
dovessero esserci docenti che insegnano la stessa materia, saranno tutti visualizzati.
Se la clausola group by avesse fatto riferimento solo al nome della materia si sarebbe
visualizzato solo uno tra i docenti che insegnano quella stessa materia.

13
Elaborato di informatica | Davide d'Auria

Elenco delle classi del docente “Bianchi Antonio”


SELECT C.NOME
FROM (CLASSE AS C INNER JOIN ORARIO AS O
(ON C.ID_CLASSE=O.id_classe)
INNER JOIN DOCENTE AS D
((ON D.ID_DOCENTE=O.id_DOCENTE)
AND (D.NOME=”ANTONIO” AND D.COGNOME=”BIANCHI”));

Si vuole conoscere per ogni classe il numero di studenti di cui è composta


SELECT COUNT(S.ID_STUDENTE) AS NUM_STUDENTI, C.NOME
FROM STUDENTE AS S INNER JOIN CLASSE AS C
ON S.id_CLASSE=C.ID_CLASSE
GROUP BY C.NOME;

14
Elaborato di informatica | Davide d'Auria

ELABORATO PARTE SECONDA

PUNTO 1
Si vuole conoscere per ogni docente il numero di classi in cui insegna 
SELECT D.COGNOME, COUNT(C.ID_CLASSE) AS NUM_CLASSI
FROM (DOCENTE AS D INNER JOIN ORARIO AS O
(ON O.id_DOCENTE=D.ID_DOCENTE))
INNER JOIN CLASSE AS C
ON C.ID_CLASSE=O.id_CLASSE
GROUP BY D.COGNOME;

Tutte le classi dove viene insegnata “INFORMATICA”


SELECT C.NOME
FROM (CLASSE AS C INNER JOIN ORARIO AS O
(ON C.ID_CLASSE=O.id_CLASSE))
INNER JOIN MATERIA AS M
((ON M.ID_MATERIA=O.id_MATERIA)
AND (M.NOME=”INFORMATICA”))
GROUP BY C.NOME;

Tutte le classi dove viene insegnata la materia trattata dal docente “Bianchi
Antonio”
SELECT C.NOME
FROM (CLASSE AS C INNER JOIN ORARIO AS O
(ON C.ID_CLASSE=O.id_CLASSE))
INNER JOIN MATERIA AS M
ON M.ID_MATERIA=O.id_MATERIA

15
Elaborato di informatica | Davide d'Auria

AND M.NOME = (SELECT M.NOME


FROM (MATERIA AS M INNER JOIN ORARIO AS O
ON M.ID_MATERIA=O_id_MATERIA)
INNER JOIN DOCENTE AS D
((ON D.ID_DOCENTE=O.id_DOCENTE)
AND (D.NOME=”ANTONIO” AND D.COGNOME=”BIANCHI”);

PUNTO 4-5

16
Elaborato di informatica | Davide d'Auria

 Scrivere il codice html della home page dell’istituto Caruso


 In relazione al tema proposto nella prima parte, sviluppare le pagine web
necessarie all’ inserimento nel sistema di un nuovo studente ed alla
visualizzazione di tutti i docenti, in un linguaggio di programmazione di
propria scelta.
Index.php
<?php
header('Location:public'); ?>

public/index.php
<?php $page=isset($_GET["page"]) ?
$_GET["page"]
: 'homepage.php' ;?>
<?php include '../inc/inizializzazione.php' ?>
<?php include root_path . 'public/template parts/header.php' ?>
<?php include root_path . 'public/pages/' . $page ?>
<?php include root_path . 'public/template parts/footer.php' ?>

Public/pages/homepage.php

<div class="hero">
<div class="hero__content reveal">
<p class="intro-text">la scuola che fa per te</p>
<h1 class="Big-text tw">Istituto Hope</h1>
<a href="http://localhost/tutorial_php/public/?page=chisiamo.php"
class="button">Scopri di più</a>
</div>
</div>
<div class="poster mtorg-3">

17
Elaborato di informatica | Davide d'Auria

<div class="poster__img reveal"> <img src="https://img.freepik.com/free-


photo/school-supplies-top-view-background-chalkboard-free-space_73683-
2217.jpg?size=626&ext=jpg" alt=""></div>

<div class="poster__content reveal">


<h3 class="Big-text">Benvenuti nell'Istituto Hope</h3>
<p>Nel nostro istituto, riconosciamo e coltiviamo i punti di forza e i talenti di
ogni studente, fornendo allo stesso tempo istruzioni personalizzate per soddisfare
le sue esigenze di apprendimento uniche. Il nostro approccio unico di incorporare
supporti terapeutici durante la giornata scolastica accademica ci consente di
fornire agli studenti un ambiente in cui si sentono sicuri di apprendere, crescere e
costruire relazioni positive. L'accento è posto sulla preparazione al college e alla
carriera e sullo sviluppo delle capacità di funzionamento esecutivo per tutti gli
studenti.</p>
<a href="http://localhost/tutorial_php/public/?page=gallery.php"
class="button">Scopri di più</a>
</div>
</div>

<div class="bg-cover mtorg-3">


<div class="bg-cover__title">
<h3 class="Big-text tw reveal">Perchè scegliere noi?</h3>
</div>
<div class="bg-cover__text tw reveal">
<h4 class="ts reveal">Approccio terapeutico</h4>
<p>Manteniamo un ampio team di medici esperti che sono disponibili per
supportare gli studenti durante tutta la giornata. Il nostro personale clinico

18
Elaborato di informatica | Davide d'Auria

certificato segue da vicino i progressi socio-emotivi e comportamentali di ogni


singolo studente, poiché riteniamo che la crescita in queste aree sia importante
tanto quanto il successo accademico. I nostri medici lavorano a stretto contatto
con gli insegnanti di classe per garantire che consideriamo le esigenze emotive di
ogni studente per garantire che siano disponibili per l'apprendimento durante tutta
la giornata scolastica.</p>
<h4 class="ts reveal">Servizi di transizione</h4>
<p>Lavorando anche con i nostri studenti più giovani, abbiamo in mente il loro
futuro a lungo termine. Per i nostri studenti delle scuole superiori, forniamo varie
esperienze di preparazione all'istruzione secondaria e esperienze di tirocinio adatte
alle loro preferenze e ai loro obiettivi futuri.</p>
<h4 class="ts reveal">
Servizi di coinvolgimento scolastico</h4>
<p>
Riconosciamo che la scuola non è facile per molti studenti. Per alcuni studenti, il
pensiero di uscire di casa per prendere un autobus o entrare in un edificio
scolastico è semplicemente travolgente. Nella nostra scuola, forniamo servizi
specializzati per gli studenti che provano una significativa ansia riguardo alla
frequenza scolastica. Questi servizi comportano un programma altamente
individualizzato per aiutare lo studente a impegnarsi nella scuola.</p>
</div>

</div>

<div class="grid mtorg-3">


<div class="grid-col">
<h3 class="Big-text reveal">Percorsi <br> di studio </h3>
</div>
<div class="grid-col mtorg-3 reveal">
<p>L'offerta formativa della scuola vuole intercettare i bisogni di una società
complessa che opera in una dimensione internazionale. Lo studente potrà, così,

19
Elaborato di informatica | Davide d'Auria

scegliere il percorso di studi che meglio risponde alle sue aspirazioni e alle sue
ambizioni all'interno di un'ampia varietà di opzioni:</p>
</div>

</div>

<div class="main-carousel" data-flickity='{ "cellAlign": "left", "contain": true }'>


<div class="carousel-cell "><div class="carousel-cell__content zoom"><a
href="http://localhost/tutorial_php/public/?
page=chisiamo.php">AMMINISTRAZIONE FINANZA E
MARKETING</a></div></div>
<div class="carousel-cell "><div class="carousel-cell__content zoom"><a
href="http://localhost/tutorial_php/public/?page=chisiamo.php">SISTEMI
INFORMATIVI AZIENDALI</a></div></div>
<div class="carousel-cell "><div class="carousel-cell__content zoom"><a
href="http://localhost/tutorial_php/public/?page=chisiamo.php">RELAZIONI
INTERNAZIONALI</a></div></div>
<div class="carousel-cell "><div class="carousel-cell__content zoom"><a
href="http://localhost/tutorial_php/public/?page=chisiamo.php">TURISTICO</
a></div></div>
<div class="carousel-cell "><div class="carousel-cell__content"><a
href="http://localhost/tutorial_php/public/?page=chisiamo.php">CORSI SERALI
PER ADULTI</a></div></div>
</div>

Public/pages/chisiamo.php

<header>

20
Elaborato di informatica | Davide d'Auria

<div class="overlay reveal">

<h1 class="mtorg-3 Big-text">Simply The Best</h1>


<h3 class="intro-text">Ragioni per sceglierci</h3>
<p class="small-text tw">scorri per saperne di più</p>

</div>
</header>

<div class="main-carousel mtorg-3" data-flickity='{ "cellAlign": "left",


"contain": true }'>
<div class="carousel-cella">
<h1 class="Big-text tw mtorg-3 reveal">Percorsi di studio</h1>
<p class="intro-text reveal">scopri di più -></p>
</div>
<div class="carousel-cella1">
<h1 class="Big-text tw ">Sistemi informativi <br> aziendali</h1>
<hr>
<p class="mtorg-1 ">Nell’articolazione Sistemi Informativi Aziendali il
profilo si caratterizza per il riferimento sia all'ambito della gestione del sistema
informativo aziendale sia alla valutazione, alla scelta e all'adattamento di software
applicativi. Tali attività sono tese a migliorare l'efficienza aziendale attraverso la
realizzazione di nuove procedure, con particolare riguardo al sistema di
archiviazione, all'organizzazione della comunicazione in rete e alla sicurezza
informatica.</p>
</div>
<div class="carousel-cella2">
<h1 class="Big-text tw ">Amministrazione, finanza <br> e marketing</h1>
<hr>

21
Elaborato di informatica | Davide d'Auria

<p class="mtorg-1 ">È il percorso generale, caratterizzato principalmente


dallo studio di discipline giuridiche ed economiche, quali diritto, economia
aziendale e politica, e delle lingue straniere. Il profilo fornisce allo studente
competenze nel campo finanziario, nella normativa civilistica e fiscale, nei sistemi
e nei processi aziendali, negli strumenti di marketing, nei prodotti assicurativo-
finanziari e nell'economia sociale.
Per questa articolazione nel nostro istituto sono previste anche le curvature
Procuratore Sportivo e Amministratore di Condominio, che forniranno allo
studente competenze adeguate ad operare in questi specifici settori.</p>
</div>
<div class="carousel-cella3">
<h1 class="Big-text tw ">Relazioni internazionali <br> per il marketing</h1>
<hr>
<p class="mtorg-1 ">L'articolazione Relazioni internazionali per il marketing
approfondisce, in modo particolare, gli aspetti relativi alla gestione dei rapporti
aziendali nazionali ed internazionali e all'utilizzo delle forme più appropriate di
comunicazione aziendale, anche in tre lingue straniere.
Durante il percorso di studi, oltre alle competenze relative alle discipline
generali (lingua italiana e straniera, matematica, materie scientifico-tecnologiche,
materie storico-socio-economiche) e oltre ai risultati di apprendimento comuni a
tutti i percorsi di istruzione tecnica, saranno acquisite competenze specifiche di
indirizzo</p>
</div>
<div class="carousel-cella4">
<h1 class="Big-text tw ">Turismo <br></h1>
<hr>
<p class="mtorg-1 ">L’indirizzo TURISMO è una specializzazione degli
indirizzi di istruzione tecnica del settore economico.
Il piano di studi prevede un biennio comune che ha funzione orientativa e
fornisce la preparazione necessaria per affrontare l’indirizzo di specializzazione
nel triennio.
Oltre ad una solida base di cultura generale, l’indirizzo Turismo consente di
acquisire una preparazione adeguata nel settore specifico, non solo nelle

22
Elaborato di informatica | Davide d'Auria

competenze di ambito tecnico-professionale riguardanti la gestione delle aziende


del comparto turistico, ma più ampiamente anche nell’ambito linguistico e
umanistico.
Si sviluppano competenze legate alla comunicazione e alla promozione e si
stimola la conoscenza delle bellezze di territori vicini e lontani.
</p>
</div>
<div class="carousel-cella5">
<h1 class="Big-text tw ">Corso serale <br> per adulti e studenti
lavoratori</h1>
<hr>
<p class="mtorg-1 ">Il corso di studi serale consente il rientro formativo degli
studenti lavoratori che intendono conseguire il diploma di ragioniere, con orari,
programmi e metodi di lavoro specificamente strutturati per soddisfare le esigenze
di un'utenza adulta.
Le lezioni si svolgono in orario pomeridiano.</p>
</div>
</div>
<div class="poster mtorg-3">
<div class="poster__img reveal"> <img
src="https://www.impresedilinews.it/files/2017/10/scuola-di-collecchio.jpg"
alt=""></div>

<div class="poster__content reveal">


<h3 class="Big-text ">La nostra sede</h3>
<p>L'istituto Tecnico Economico "Hope" si trova a Napoli, in Via San
Giovanni de Matha, 8.
L'edificio è moderno, ristrutturato e dotato di aule rispondenti agli standard di
sicurezza e funzionalità indispensabili ad una scuola che voglia andare al passo
con le più attuali esigenze degli studenti.
L'intero istituto è dotato di una rete interna che consente l'accesso ad internet da
tutte le aule.</p>

23
Elaborato di informatica | Davide d'Auria

</div>
</div>
Public/pages/gallery.php

<header>

<div class="overlay reveal">

<h1 class="mtorg-3 Big-text">Dai un'occhiata alla nostra scuola</h1>


<p class="small-text tw">scorri per saperne di più</p>

</header>

<div class="container mtorg-3 zoom">


<div class="box">
<img src="https://images.unsplash.com/photo-1513635625218-
6956bc843133?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8NXx8aGlnaHNjaG9vbHxlbnwwfHwwf
Hw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.pexels.com/photos/5554250/pexels-photo-
5554250.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
<div class="box">

24
Elaborato di informatica | Davide d'Auria

<img src="https://images.pexels.com/photos/5676676/pexels-photo-
5676676.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1610694858449-
0079cf6a5b96?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8N3x8aGlnaHNjaG9vbHxlbnwwfHwwf
Hw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1596496638503-
0980ae36f17a?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8MjJ8fGhpZ2hzY2hvb2x8ZW58MHx8
MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1547347298-4074fc3086f0?
ixid=MnwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8&ixlib=rb-
1.2.1&auto=format&fit=crop&w=1050&q=80">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1571260899304-425eee4c7efc?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8Njl8fGhpZ2hzY2hvb2x8ZW58MHx8M
Hx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.pexels.com/photos/6208726/pexels-photo-
6208726.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
</div>
<div class="container zoom">

25
Elaborato di informatica | Davide d'Auria

<div class="box">
<img src="https://images.pexels.com/photos/7322774/pexels-photo-
7322774.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
<div class="box">
<img src="https://images.pexels.com/photos/3380826/pexels-photo-
3380826.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940">
</div>
<div class="box">
<img src="https://images.pexels.com/photos/6208701/pexels-photo-
6208701.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1553941884-f8947df6e0ba?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8MTB8fGhpZ2hzY2hvb2x8ZW58MHx8
MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1547317213-f1949d62ea17?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8NHx8aGlnaHNjaG9vbHxlbnwwfHwwf
Hw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>
<div class="box">
<img src="https://images.pexels.com/photos/7324651/pexels-photo-
7324651.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
<div class="box">
<img src="https://images.unsplash.com/photo-1543666752-dfc2f3f3ebad?
ixid=MnwxMjA3fDB8MHxzZWFyY2h8MTh8fGhpZ2hzY2hvb2x8ZW58MHx8
MHx8&ixlib=rb-1.2.1&auto=format&fit=crop&w=500&q=60">
</div>

26
Elaborato di informatica | Davide d'Auria

<div class="box">
<img src="https://images.pexels.com/photos/6209802/pexels-photo-
6209802.jpeg?auto=compress&cs=tinysrgb&dpr=1&w=500">
</div>
</div>

Public/pages/dashboard.php
<?php
$productMgr= new productManager();
$prodotti=$productMgr->getAll();
//var_dump($product)
?>

<header>
<div class="overlay reveal">
<h1 class="mtorg-3 Big-text">Imparare non è mai stato così semplice</h1>
<p class="small-text tw">scorri per sapere di più sui libri da acquistare</p>
</div>
</header>
<div class="center mtorg-2">
<?php foreach ($prodotti as $prodotti) : ?>
<div class="property-card zoom">
<a href="#">
<div class="property-image">
<div class="property-image-title">

27
Elaborato di informatica | Davide d'Auria

</div>
</div></a>
<div class="property-description">
<h5> <?php echo $prodotti->Name ?> </h5>
<p> <p><?php echo $prodotti->description ?></p></p>
</div>
<a href="#">
<div class="property-social-icons">
</div>
</a>
</div>
<?php endforeach; ?>

</div>
Public/pages/student-list.php
<?php
$StudentMgr= new StudentManager();
$studente=$StudentMgr->getAll();
//var_dump($product)
?>

<header>
<div class="overlay reveal">
<h1 class="mtorg-3 Big-text">Elenco degli studenti</h1>

</div>

28
Elaborato di informatica | Davide d'Auria

</header>
<div class="center mtorg-2">
<?php foreach ($studente as $studente) : ?>
<div class="property-card zoom">
<a href="#">
<div class="property-image2">
<div class="property-image-title">

</div>
</div></a>
<div class="property-description">
<h5> <?php echo $studente->nome ?> </h5>
<p> <p><?php echo $studente->cognome ?></p></p>
</div>
<a href="#">
<div class="property-social-icons">
</div>
</a>
</div>
<?php endforeach; ?>

</div>
<div class="login mtorg-2">
<a href="http://localhost/tutorial_php/autenticazione/?page=aggiungi-
studente.php" class="button">Aggiungi uno studente +</a>

<a href="http://localhost/tutorial_php/autenticazione/?page=register.php"
class="button">Aggiungi un account studente +</a>

29
Elaborato di informatica | Davide d'Auria

</div>
Public/pages/teacher-list.php
<?php
$DocenteMgr= new DocenteManager();
$docente=$DocenteMgr->getAll();
//var_dump($product)
?>

<header>
<div class="overlay">
<h1 class="mtorg-3 Big-text">I nostri docenti</h1>

</div>
</header>
<div class="center mtorg-2">
<?php foreach ($docente as $docente) : ?>
<div class="property-card zoom">
<a href="#">
<div class="property-image1">
<div class="property-image-title">

</div>
</div></a>
<div class="property-description">
<h5> <?php echo $docente->nome ?> </h5>
<p><?php echo $docente->cognome ?></p>

30
Elaborato di informatica | Davide d'Auria

<p><?php echo $docente->materia ?> </p>

</div>
<a href="#">
<div class="property-social-icons">
</div>
</a>
</div>
<?php endforeach; ?>

Public/template parts/header.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/normalize/8.0.1/normalize.min.css"
integrity="sha512-NhSC1YmyruXifcj/KFRWoC561YpHpc5Jtzgvbuzx5VozKpW
vQ+4nXhPdFgmx8xqexRcpAglTj9sIBWINXa8x5w=="
crossorigin="anonymous" />
<link rel="stylesheet" href="https://bootswatch.com/5/materia/bootstrap.css">
<link rel="preconnect" href="https://fonts.gstatic.com">
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css"
integrity="sha512-
iBBXm8fW90+nuLcSKlbmrPcLa0OT92xO1BIsZ+ywDWZCvqsWgccV3gFoRB
v0z+8dLJgyAHIhR35VZc2oM/gI1w==" crossorigin="anonymous" />

31
Elaborato di informatica | Davide d'Auria

<link href="https://fonts.googleapis.com/css2?
family=Inter:wght@300;400;700;900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css">
<script src="https://unpkg.com/scrollreveal@4.0.0/dist/scrollreveal.min.js"></
script>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/flickity/2.2.2/flickity.min.css"
integrity="sha512-
BiFZ6oflftBIwm6lYCQtQ5DIRQ6tm02svznor2GYQOfAlT3pnVJ10xCrU3XuXn
UrWQ4EG8GKxntXnYEdKY0Ugg==" crossorigin="anonymous" />
<style media="screen">
/* ! style */

body {
font-family: 'Inter', sans-serif;
}

ul {
list-style: none;
}

button {
color:#fff;
text-transform: uppercase;
border: red;
}

form {
width: 500px; margin:0 auto; text-align: center;

32
Elaborato di informatica | Davide d'Auria

}
a{
text-decoration: none; color: #fff;
}

h1, h2, h3, h4, h5, {


color: #fff;
}

h6 {
color: red;
}

p{
line-height: 28px; color: #666; font-weight: 300;
}

.Big-text {
font-weight: 900;
font-size: 70px;

}
}

.mid-text {
font-size: 40px;

33
Elaborato di informatica | Davide d'Auria

.normal-text {
font-size: 20px;
}

.small-text {
font-size: 16px;
}

.intro-text{
font-size: 20px; text-transform: uppercase; font-weight: bold;
}

.button {
display: inline-block;
padding: 10px 20px;
border-radius: 4px;
background-image: linear-gradient(to left,#00b4d8 0%, #09009f 100%);

.button:hover {
background: #09009f ;

34
Elaborato di informatica | Davide d'Auria

transition: 1.0s;
}

@media (max-width: 768px) {


.Big-text {
font-weight: 900;
font-size: 40px;
}
.mid-text {
font-size: 40px;
}
.normal-text {
font-size: 20px;
}
.small-text {
font-size: 16px;
}
.intro-text{
font-size: 15px; text-transform: uppercase; font-weight: bold;
}

/* ! header */

35
Elaborato di informatica | Davide d'Auria

.header {

width: 100%;
position: absolute;
display: flex;
text-transform: uppercase;
max-width: 1350px;
left: 50%;
transform: translateX(-50%);
padding: 10px;
z-index:999
}

.logo {
z-index: 2;
}

.logo img {
width: 150px;
height: 150px;

.menu {
z-index:1;
margin: auto;
width: 100%;

36
Elaborato di informatica | Davide d'Auria

.menu ul{

.menu li {
display: inline-block;

.menu a {
padding: 0 5px;
height: 100%;
text-align: center;
font-weight: 700;
color: #fff;
position: relative;
display: block;
background: -webkit-linear-gradient(45deg, #495057, #ced4da 80%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;

}
.menu a:after {

37
Elaborato di informatica | Davide d'Auria

content: '';
display: block;
border-bottom: 3px solid #00b4d8;
width: 0;
position: absolute;
left: 0;
-webkit-transition: 1s ease;
transition: 1s ease;
}

.menu a:hover:after {

width: 100%;
}

.login {
padding: 0 10px;
margin: auto;
text-transform: uppercase;
}

.login a:hover {
color: #fff;
}

38
Elaborato di informatica | Davide d'Auria

.cart {
margin: auto;
padding-left: 10px;
}

.cart img {

width: 50px;
height: 50px;

.hamburger {
display: none;
}

@media (max-width: 768px) {

.login {
display: none;

39
Elaborato di informatica | Davide d'Auria

.menu {
position: absolute; background: #000; right:-100%; height: 100vh; padding-top:
100px;
}

.menu li {
display: block;
}

.menu a {
text-align: left;
padding: 10px;
font-size: 25px;
}

.menu--open {
right:0;
}
.cart {
display: none;

.hamburger {

display: block;

40
Elaborato di informatica | Davide d'Auria

z-index: 3;
width: 100%;
}

.hamburger img {
height: 50px;
width: 50px;
float: right;
}

.logo {
padding-left: 40px;
}

.logo img {
width: 110px;
height: 100px;

}
}

41
Elaborato di informatica | Davide d'Auria

/* ! hero */

.hero__content {
width: 100%;
max-width: 1350px;
margin: 0 auto;
}

.hero {
background: linear-gradient(0deg, rgba(0,0,0,0.1), rgba(0,0,0,.9)),
url("img/sfondo.jpg") center no-repeat;
background-size: cover;
height: 100vh;
display: flex; width: 100%; align-items: center;
padding: 10px;

.header1 {
background: linear-gradient(0deg, rgba(0,0,0,0.6), rgba(0,0,0,.9)),
url('https://static.vecteezy.com/system/resources/previews/002/221/016/
original/cyber-technology-security-lock-on-digital-screen-network-protection-
background-design-illustration-free-vector.jpg') center no-repeat; text-align:
center;

42
Elaborato di informatica | Davide d'Auria

width: 100%;
height: 70vh;
display: flex;
align-items: center;
background-size: cover;
background-attachment: fixed;
position: relative;
overflow: hidden;
border-radius: 0 0 85% 85% / 30%;
}

header {
background: linear-gradient(0deg, rgba(0,0,0,0.6), rgba(0,0,0,.9)),
url('https://images.pexels.com/photos/8117534/pexels-photo-8117534.jpeg?
auto=compress&cs=tinysrgb&dpr=1&w=500') center no-repeat; text-align:
center;
width: 100%;
height: 70vh;
display: flex;
align-items: center;
background-size: cover;
background-attachment: fixed;
position: relative;
overflow: hidden;
border-radius: 0 0 85% 85% / 30%;
}

43
Elaborato di informatica | Davide d'Auria

header .overlay, .header1 .overlay {

width: 100%;
height: 100%;
padding: 50px;
color: #FFF;
text-shadow: 1px 1px 1px #333;

};

@media (max-width: 768px) {


.hero {
padding-left: 40px;
}
}
/* ! contacts */
#header {
background: linear-gradient(0deg, rgba(0,0,0,0.6), rgba(0,0,0,.9)),
url("img/sfondo.jpg") center no-repeat; text-align: center;
width: 100%;

44
Elaborato di informatica | Davide d'Auria

height: 50vh;
display: flex;
align-items: center;
background-size: cover;
background-attachment: fixed;
position: relative;
overflow: hidden;
border-radius: 0 0 85% 85% / 30%;
}
#header .overlay{

width: 100%;
height: 100%;
padding: 50px;
color: #FFF;
text-shadow: 1px 1px 1px #333;

};

/* ! card */
.center
{
height:100%;
width:100%;
justify-content: center;
}

45
Elaborato di informatica | Davide d'Auria

.property-card
{
height:18em;
width:14em;
display:-webkit-box;
display:-ms-flexbox;
display:inline-flex;
-webkit-box-orient:vertical;
-webkit-box-direction:normal;
-ms-flex-direction:column;
flex-direction:column;
position:relative;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
border-radius:15px;
overflow:hidden;
-webkit-box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
box-shadow: 15px 15px 27px #e1e1e3, -15px -15px 27px #ffffff;
margin-left: 30px;
margin-top: 30px;
}
/* ^-- The margin bottom is necessary for the drop shadow otherwise it gets
clipped in certain cases. */

/* Top Half of card, image. */

.property-image

46
Elaborato di informatica | Davide d'Auria

{
height:6em;
width:14em;
padding:1em 2em;
position:Absolute;
top:0px;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
background-image:url('https://cdn.dribbble.com/users/177287/screenshots/
2766897/dribbble.png?compress=1&resize=400x300');
background-size:cover;
background-repeat:no-repeat;
}
.property-image1
{
height:6em;
width:14em;
padding:1em 2em;
position:Absolute;
top:0px;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
background-image:url('https://encrypted-tbn0.gstatic.com/images?
q=tbn:ANd9GcTVPD7rA0L4TOnPwNtn2GUkboNyNwX8QRCG_Q&usqp=CA
U');
background-size:cover;

47
Elaborato di informatica | Davide d'Auria

background-repeat:no-repeat;
}

.property-image2
{
height:6em;
width:14em;
padding:1em 2em;
position:Absolute;
top:0px;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
background-image:url('https://encrypted-tbn0.gstatic.com/images?
q=tbn:ANd9GcRdSHBxoddxTNrMPqccvn7kggTFLUfFrPj8gw&usqp=CAU');
background-size:cover;
background-repeat:no-repeat;
}
/* Bottom Card Section */

.property-description
{
background-color: #FAFAFC;
height:12em;
width:14em;
position:absolute;
bottom:0em;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);

48
Elaborato di informatica | Davide d'Auria

-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);


transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
padding: 0.5em 1em;
text-align:center;
}

/* Social Icons */

.property-social-icons
{
width:1em;
height:1em;
background-color:black;
position:absolute;
bottom:1em;
left:1em;
-webkit-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
-o-transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
transition:all 0.4s cubic-bezier(0.645, 0.045, 0.355, 1);
}

/* Property Cards Hover States */

.property-card:hover .property-description
{
height:0em;
padding:0px 1em;
}

49
Elaborato di informatica | Davide d'Auria

.property-card:hover .property-image
{
height:18em;
}
.property-card:hover .property-image1
{
height:18em;
}
.property-card:hover .property-image2
{
height:18em;
}

.property-card:hover .property-social-icons
{
background-color:white;
}

.property-card:hover .property-social-icons:hover
{
background-color:blue;
cursor:pointer;
}

/* ! gallery */

.container {
display: flex;

50
Elaborato di informatica | Davide d'Auria

width: 100%;
padding: 4% 2%;
box-sizing: border-box;
height: 100vh;
}

.box {
flex: 1;
overflow: hidden;
transition: .5s;
margin: 0 2%;
box-shadow: 0 20px 30px rgba(0,0,0,.1);
line-height: 0;
}

.box > img {


width: 200%;
height: calc(100% - 10vh);
object-fit: cover;
transition: .5s;
}

.box > span {


font-size: 3.8vh;
display: block;
text-align: center;
height: 10vh;
line-height: 2.6;

51
Elaborato di informatica | Davide d'Auria

.box:hover { flex: 1 1 50%; }


.box:hover > img {
width: 100%;
height: 100%;
}

/* Poster */

.poster {
height: 100vh;
display: flex;
width: 100%;
align-items: center;
}

.poster__img {
width: 60%;
height: 100%;
}

.poster__img img {
object-fit: cover;
width: 100%;
height: 100%;

52
Elaborato di informatica | Davide d'Auria

.poster__content {
width: 40%;
padding: 10px;
}

.poster__content h4 {
color: #000;
}

@media (max-width: 768px) {


.poster {
flex-wrap: wrap; height: auto;
}

.poster__img, .poster__content{
width: 100%;
}
}

53
Elaborato di informatica | Davide d'Auria

/* ! bg-cover */

.bg-cover {
display: flex;
padding: 100px 0;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://images.pexels.com/photos/5676667/pexels-photo-5676667.jpeg?
auto=compress&cs=tinysrgb&dpr=1&w=500") center no-repeat;
background-size: cover;
padding: 30px;
}

.bg-cover__title{
width: 50%;
padding: 50px;
margin: auto;
}

.bg-cover__text{

54
Elaborato di informatica | Davide d'Auria

width: 50%;
}

@media (max-width: 768px) {


.bg-cover {
flex-wrap: wrap; height: auto;
}

.bg-cover__title, .bg-cover__text {
width: 100%;
}
}

/* ! grid colonna*/

.grid {

55
Elaborato di informatica | Davide d'Auria

display: flex; max-width: 1350px; margin: 0 auto; padding: 0px 30px;


}

.grid-col {
width: 100%;
}

@media (max-width: 768px) {


.grid {flex-wrap: wrap;
}

/* ! carousel */

.main-carousel {padding: 40px 0px;}

.carousel-cell {height: 350px;


width: 350px;

margin-right: 40px;}

.carousel-cell__content{
background: #09009f;
border-radius: 100%;
line-height: 350px;

56
Elaborato di informatica | Davide d'Auria

text-align: center;
}

.carousel-cella {
height: 700px;
width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("img/sfondo.jpg") center no-repeat;
background-size: cover;
text-align: center;
margin-right: 40px;}

.carousel-cella1 {
height: 700px;
width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://www.onoratoinformatica.it/wp-content/uploads/2021/01/quale-
attivita-e-fondamentale-per-la-sicurezza-informatica.png") center no-repeat;
background-size: cover;
text-align: center;
margin-right: 40px;}

.carousel-cella2 {
height: 700px;
width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://www.hrpb.it/wp-content/uploads/2018/12/economia-aziendale-
risorse-umane-1024x683.jpg") center no-repeat;

57
Elaborato di informatica | Davide d'Auria

background-size: cover;
text-align: center;
margin-right: 40px;}

.carousel-cella3 {
height: 700px;
width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://www.unistrapg.it/sites/default/files/docs/lauree/rics/rics.jpg") center
no-repeat;
background-size: cover;
text-align: center;
margin-right: 40px;}

.carousel-cella4 {
height: 700px;
width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://www.vaticannews.va/content/dam/vaticannews/multimedia/
2018/08/04/tourism%20marketing.jpg/_jcr_content/renditions/
cq5dam.thumbnail.cropped.1000.563.jpeg") center no-repeat;
background-size: cover;

text-align: center;
margin-right: 40px;}

.carousel-cella5 {
height: 700px;

58
Elaborato di informatica | Davide d'Auria

width: 100%;
background: linear-gradient(0deg, rgba(0,0,0,0.8), rgba(0,0,0,.9)),
url("https://www.agecasa.com/shimg/800%7C400%7Cx
%7C0%7Cfoto_86567420371.jpg") center no-repeat;
background-size: cover;

text-align: center;
margin-right: 40px;}

.carousel-cella h1 {
width: 100%;
text-align: center;
}

.carousel-cella1 h1 {
width: 100%;
text-align: center;
}

.carousel-cella2 h1 {
width: 100%;
text-align: center;
}

.carousel-cella3 h1 {
width: 100%;
text-align: center;

59
Elaborato di informatica | Davide d'Auria

.carousel-cella4 h1 {
width: 100%;
text-align: center;
}

.carousel-cella5 h1 {
width: 100%;
text-align: center;
}
.carousel-cella p {
font-size: 30px;
}

.carousel-cella1 p {
font-size: 30px;
}

.carousel-cella2 p {
font-size: 30px;
}

.carousel-cella3 p {
font-size: 30px;
}

.carousel-cella4 p {

60
Elaborato di informatica | Davide d'Auria

font-size: 30px;
}

.carousel-cella5 p {
font-size: 30px;
}

/* ! footer */

footer{
border-top: 1px solid #0353a4; /* primary-color */
text-align:center;
padding:30px 10px;
line-height: 1.6em;
font-size:0.8em;
background-color: #001845;/* primary color*/
color: #fff;
}

footer a{
color:#0353a4; /* secondary-color*/
}

footer a:hover{
color:#FF968C; /* light seconday color*/
}

61
Elaborato di informatica | Davide d'Auria

footer .credits {
max-width:300px;
margin:auto;
}

footer .credits a img {


-o-transition: opacity .2 ease-in;
-ms-transition: opacity .2s ease-in;
-moz-transition: opacity .2s ease-in;
-webkit-transition: opacity .2s ease-in;
transition: opacity .2s ease
}

footer .credits a img:hover {


opacity:0.6;
}

footer .social-cont .social-list {


list-style-type: none;
margin: 0 auto;
padding: 10px 0;
}

footer .social-cont .social-list > li {


margin: 8px 8px 8px 0;
display: inline-block;
vertical-align: top;
height: 50px;

62
Elaborato di informatica | Davide d'Auria

width: 50px;
border-radius: 6em;
background-color:#001845; /* secondary-color*/
}

.facebook {
width: 45px; object-fit: cover;padding-top: 2px;

.instagram {
width: 40px; object-fit: cover;padding-top: 4px;
}

.twitter {
width: 40px; object-fit: cover;padding-top: 8px;

footer .social-cont .social-list > li:hover {


background:#1DA1F2; /* light seconday color*/
}

footer .social-cont .social-list > .facebook-icon:hover {


background:#4267B2; /* light seconday color*/
}

63
Elaborato di informatica | Davide d'Auria

footer .social-cont .social-list > .instagram-icon:hover {


background: #d6249f;
background: radial-gradient(circle at 30% 107%, #fdf497 0%, #fdf497 5%,
#fd5949 45%,#d6249f 60%,#285AEB 90%);
box-shadow: 0px 3px 10px rgba(0,0,0,.25); }; /* light seconday color*/
}

.background {
display: flex;
min-height: 100vh;
}

.container {
flex: 0 1 700px;
margin: auto;
padding: 10px;
}

.screen {
position: relative;
background: #3e3e3e;
border-radius: 15px;
}

64
Elaborato di informatica | Davide d'Auria

.screen:after {
content: '';
display: block;
position: absolute;
top: 0;
left: 20px;
right: 20px;
bottom: 0;
border-radius: 15px;
box-shadow: 0 20px 40px rgba(0, 0, 0, .4);
z-index: -1;
}

.screen-header {
display: flex;
align-items: center;
padding: 10px 20px;
background: #4d4d4f;
border-top-left-radius: 15px;
border-top-right-radius: 15px;
}

.screen-header-left {
margin-right: auto;
}

.screen-header-button {
display: inline-block;

65
Elaborato di informatica | Davide d'Auria

width: 8px;
height: 8px;
margin-right: 3px;
border-radius: 8px;
background: white;
}

.screen-header-button.close {
background: #ed1c6f;
}

.screen-header-button.maximize {
background: #e8e925;
}

.screen-header-button.minimize {
background: #74c54f;
}

.screen-header-right {
display: flex;
}

.screen-header-ellipsis {
width: 3px;
height: 3px;
margin-left: 2px;
border-radius: 8px;

66
Elaborato di informatica | Davide d'Auria

background: #999;
}

.screen-body {
display: flex;
}

.screen-body-item {
flex: 1;
padding: 50px;
}

.screen-body-item.left {
display: flex;
flex-direction: column;
}

.app-title {
display: flex;
flex-direction: column;
position: relative;
color: #ea1d6f;
font-size: 26px;
}

.app-title:after {
content: '';
display: block;

67
Elaborato di informatica | Davide d'Auria

position: absolute;
left: 0;
bottom: -10px;
width: 25px;
height: 4px;
background: #ea1d6f;
}

.app-contact {
margin-top: auto;
font-size: 8px;
color: #888;
}

.app-form-group {
margin-bottom: 15px;
}

.app-form-group.message {
margin-top: 40px;
}

.app-form-group.buttons {
margin-bottom: 0;
text-align: right;
}

.app-form-control {

68
Elaborato di informatica | Davide d'Auria

width: 100%;
padding: 10px 0;
background: none;
border: none;
border-bottom: 1px solid #666;
color: #ddd;
font-size: 14px;
text-transform: uppercase;
outline: none;
transition: border-color .2s;
}

.app-form-control::placeholder {
color: #666;
}

.app-form-control:focus {
border-bottom-color: #ddd;
}

.app-form-button {
background: none;
border: none;
color: #ea1d6f;
font-size: 14px;
cursor: pointer;
outline: none;
}

69
Elaborato di informatica | Davide d'Auria

.app-form-button:hover {
color: #b9134f;
}

.credits {
display: flex;
justify-content: center;
align-items: center;
margin-top: 20px;
color: #ffa4bd;
font-family: 'Roboto Condensed', sans-serif;
font-size: 16px;
font-weight: normal;
}

.credits-link {
display: flex;
align-items: center;
color: #fff;
font-weight: bold;
text-decoration: none;
}

.dribbble {
width: 20px;
height: 20px;
margin: 0 5px;

70
Elaborato di informatica | Davide d'Auria

@media screen and (max-width: 520px) {


.screen-body {
flex-direction: column;
}

.screen-body-item.left {
margin-bottom: 30px;
}

.app-title {
flex-direction: row;
}

.app-title span {
margin-right: 12px;
}

.app-title:after {
display: none;
}
}

@media screen and (max-width: 600px) {


.screen-body {
padding: 40px;
}

71
Elaborato di informatica | Davide d'Auria

.screen-body-item {
padding: 0;
}
}
/* ! cart */

.cart-buttons span {
width: 50px;
text-align: center;
border: 1px solid;
}

/* ! Helpers */

.mtorg-1 {margin-top: 50px;}


.mtorg-2 {margin-top: 100px;}
.mtorg-3 {margin-top: 150px;}
.tw{color:#fff;}
.ts{color: #09009f;
background: -webkit-linear-gradient(45deg, #09009f, #00b4d8 50%);
-webkit-background-clip: text;

72
Elaborato di informatica | Davide d'Auria

-webkit-text-fill-color: transparent;
text-transform: uppercase;
font-weight: 700;}

.pop{
-webkit-text-fill-color: transparent;
-webkit-text-stroke-width: 3px;
-webkit-text-stroke-color: white;
text-shadow:
8px 8px #09009f,
20px 20px #000000;
}

.ct {
height: 100%;
}

*,
*:before,
*:after {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}

</style>
<title>Document</title>

73
Elaborato di informatica | Davide d'Auria

</head>
<body>
<div class="header">
<div class="logo">
<a href="http://localhost/tutorial_php/public/?page=homepage.php"><img
src="img/logo.png" alt=""></a>
</div>
<div class="menu">
<ul>
<li><a href="http://localhost/tutorial_php/public/?page=chisiamo.php">Chi
siamo</a></li>
<li><a href="http://localhost/tutorial_php/public/?page=teacher-
list.php">Docenti</a></li>

<?php if($loggedInUser && $loggedInUser->is_admin) : //se esiste


loggedinuser?>
<li><a href="http://localhost/tutorial_php/public/?page=student-
list.php">Alunni</a></li>

<?php endif; ?>


<li><a href="http://localhost/tutorial_php/public/?
page=dashboard.php">Libreria</a></li>
<li><a href="http://localhost/tutorial_php/public/?
page=gallery.php">Galleria</a></li>

</ul>
</div>
<div class="login">
<?php if(!$loggedInUser) : //se non esiste loggedinuser?>

74
Elaborato di informatica | Davide d'Auria

<a href="http://localhost/tutorial_php/autenticazione/"
class="button">Accedi</a>
<?php endif; ?>
<?php if($loggedInUser) : //se esiste loggedinuser?>
<a href="http://localhost/tutorial_php/autenticazione/?page=logout.php"
class="button">Esci</a>
<?php endif; ?>
</div>

</div>

<div class="hamburger">
<img src="img/hamburger.png" alt="">
</div>
</div>

Public/template parts/footer.php
<footer class="mtorg-2">
itcHope | Via mario rossi, 24 - 80100 Napoli (NA) ITALIA<br>
<a class="trans-color-text" href="http://localhost/tutorial_php/public/?
page=chisiamo.php">Chi Siamo</a> | <span itemprop="telephone"><a
href="#">+39 320 55 81 425</a></span>
<br><a target="_blank" href="#"> privacy</a> | <a target="_blank"
href="#"> cookie policy</a>

<div class="social-cont">
<ul class="social-list">

75
Elaborato di informatica | Davide d'Auria

<li class="facebook-icon"><a target="_blank" href="#"><img class=facebook


src="img/facebook.png"></a></li>
<li class="instagram-icon"><a target="_blank" href="#"><img class=instagram
src="img/instagram-icon.png"></a></li>
<li class="twitter-icon"><a target="_blank" href="#"><img class=twitter
src="img/twitter-icon.png"></a></li>

</ul>
<div class="floatstop"></div>
</div><!--/fine social cont-->

Designed by Davide d'Auria<br>


<div class="credits">
<a href="http://localhost/tutorial_php/public/?page=homepage.php"><img
width="100" src="img/logo.png" title="#" alt="#"></a>
</div>

</footer>
<script
src="https://cdnjs.cloudflare.com/ajax/libs/flickity/2.2.2/flickity.pkgd.min.js"
integrity="sha512-
cA8gcgtYJ+JYqUe+j2JXl6J3jbamcMQfPe0JOmQGDescd+zqXwwgneDzniOd3k
8PcO7EtTW6jA7L4Bhx03SXoA==" crossorigin="anonymous"></script>
<script
src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
$( document ).ready(function() {
/* Open Panel */
$( ".hamburger" ).on('click', function() {
$(".menu").toggleClass("menu--open");

76
Elaborato di informatica | Davide d'Auria

});
});

ScrollReveal().reveal('.reveal',{ distance: '100px', duration: 1500,


interval:600});
ScrollReveal().reveal('.zoom',{ duration: 1500, interval:200, scale: 0.65});
</script>

</body>
</html>

Inc/config.php
<?php
define ('root_url', 'http://localhost/tutorial_php/');
define ('root_path', 'C:\\xampp\\htdocs\\tutorial_php\\');

define ('DB_HOST', 'localhost');


define ('DB_USER', 'root');
define ('DB_PASS', '');
define ('DB_NAME', 'scuola');

?>

Inc/function.php
<?php

77
Elaborato di informatica | Davide d'Auria

function esc($str) {
global $conn;
return mysqli_real_escape_string($conn, htmlspecialchars($str));
}

?>
Inc/globals.php
<?php
$conn = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME);

$loggedInUser=null;
if(isset($_SESSION['user'])) {
$loggedInUser=$_SESSION['user'];

}
?>

Inc/inizializzazione.php
<?php
session_start();
require_once '../inc/config.php';
require_once root_path . 'inc/globals.php';
require_once root_path . 'inc/functions.php';
require_once root_path . 'classes/db.php';
require_once root_path . 'classes/products.php';
require_once root_path . 'classes/user.php';
require_once root_path . 'classes/studenti.php';

78
Elaborato di informatica | Davide d'Auria

require_once root_path . 'classes/docenti.php';

?>

Classes/db.php
<?php

class DB {

private $conn;
public $pdo;

public function __construct() {

global $conn;
$this->conn = $conn;
if (mysqli_connect_errno()) {
echo 'Failed to connect to MySql ' . mysqli_connect_errno();
}
$this->pdo = new PDO('mysql:dbname='. DB_NAME .';host=' . DB_HOST,
DB_USER, DB_PASS);
}

public function query($sql) {


$q = $this->pdo->query($sql);
if(!$q)
{

79
Elaborato di informatica | Davide d'Auria

die("Execute query error, because: ". print_r($this->pdo->errorInfo(),true) );


}

$data = $q->fetchAll();
return $data;
}

public function select_all($tableName, $columns = array()) {

$query = "SELECT ";

$strCol = "";

foreach($columns as $colName) {
$strCol .= "". esc($colName) . ",";
}
$strCol = substr($strCol, 0, -1);

$query .= $strCol . " FROM " . $tableName;

$result = mysqli_query($this->conn, $query);

$resultArray = mysqli_fetch_all($result, MYSQLI_ASSOC);


mysqli_free_result($result);
//var_dump($result); die;

return $resultArray;

80
Elaborato di informatica | Davide d'Auria

public function select_one($tableName, $columns = array(), $ID) {

$strCol = '';
foreach($columns as $colName) {
$colName = esc($colName);
$strCol .= ' ' . $colName . ',';
}
$strCol = substr($strCol, 0, -1);
$id = esc($id);
$query = "SELECT $strCol FROM $tableName WHERE id =$id";

$result = mysqli_query($this->conn, $query);


$resultArray = mysqli_fetch_assoc($result);

mysqli_free_result($result);

return $resultArray;
}

public function delete_one($tableName, $id) {

$id = esc($id);
$query = "DELETE FROM $tableName WHERE ID = $id";

if (mysqli_query($this->conn, $query)) {
$rowsAffected = mysqli_affected_rows($this->conn);

81
Elaborato di informatica | Davide d'Auria

return $rowsAffected;
} else {

return -1;
}
}

public function update_one($tableName, $columns = array(), $id) {

$id = esc($id);
$strCol = '';
foreach($columns as $colName => $colValue) {
$colName = esc($colName);
$strCol .= " " . $colName . " = '$colValue' ,";
}
$strCol = substr($strCol, 0, -1);

$query = "UPDATE $tableName SET $strCol WHERE ID = $id";

if (mysqli_query($this->conn, $query)) {
$rowsAffected = mysqli_affected_rows($this->conn);

return $rowsAffected;
} else {

return -1;
}

82
Elaborato di informatica | Davide d'Auria

public function insert_one ($tableName, $columns = array()) {

$strCol = '';
foreach($columns as $colName => $colValue) {
$colName = esc($colName);
$strCol .= ' ' . $colName . ',';
}
$strCol = substr($strCol, 0, -1);

$strColValues = '';
foreach($columns as $colName => $colValue) {
$colValue = esc($colValue);
$strColValues .= " '" . $colValue . "' ,";
}
$strColValues = substr($strColValues, 0, -1);

$query = "INSERT INTO $tableName ($strCol) VALUES ($strColValues)";


//var_dump($query); die;
if (mysqli_query($this->conn, $query)) {
$lastId = mysqli_insert_id($this->conn);

return $lastId;
} else {

return -1;
}

83
Elaborato di informatica | Davide d'Auria

}
}

class DBManager {

protected $db;
// ATTRAVERSO L'OGGETTO DB GESTISCE IL DATABASE,
UTILIZZANDO I METODI DELLLA CLASSE DB
protected $columns;//sono accessibili da tutte le classi che ereditano da questa
protected $tableName;

public function __construct(){


$this->db = new DB();
}

public function get($id) {


$resultArr = $this->db->select_one($this->tableName, $this->columns, (int)
$id);
return (object) $resultArr;
}

public function getAll() {


$results = $this->db->select_all($this->tableName, $this->columns);
$objects = array();
foreach($results as $result) {
array_push($objects, (object)$result);
}
return $objects;

84
Elaborato di informatica | Davide d'Auria

public function create($obj) {


$newId = $this->db->insert_one($this->tableName, (array) $obj);
return $newId;
}

public function delete($id) {


$rowsDeleted = $this->db->delete_one($this->tableName, (int)$id);
return (int) $rowsDeleted;
}

public function update($obj, $id) {


$rowsUpdated = $this->db->update_one($this->tableName, (array) $obj, (int)
$id);
return (int) $rowsUpdated;
}
}
Classes/docenti.php
<?php

class DocenteManager extends DBManager {


public function __construct () {
parent::__construct();
$this->tableName= 'docente';
$this->columns= ['ID','nome','cognome','data_di_nascita','materia' ];

85
Elaborato di informatica | Davide d'Auria

Classes/products.php
<?php

class Product {

public $id;
public $name;
public $price;
public $description;
public $id_docente;

public function __construct($id, $name, $price, $description, $category_id){


$this->id = (int)$id;
$this->name = $name;
$this->price = (float)$price;
$this->description = $description;
$this->category_id = (int)$id_docente;
}
}

class productManager extends DBManager { //in questo modo ha tutte le proprietà


del dbmanager
public function __construct()

86
Elaborato di informatica | Davide d'Auria

{
parent::__construct();//richiamo il costruttore della classe padre
$this->columns = array( "ID", "Name", "price", "description", "id_docente" );
$this->tableName = 'prodotti';

}//nel costruttore non devo fare altro che valorizzare columns e table name
}

?>
Classes/studenti.php
<?php

class StudentManager extends DBManager {


public function __construct () {
parent::__construct();
$this->tableName= 'studente';
$this->columns= ['ID','nome','cognome','data_di_nascita' ];

}
public function aggiungi($nome, $cognome, $data_di_nascita ){

$StudentId=$this->create(
[

'nome'=>$nome,
'cognome'=>$cognome,
'data_di_nascita'=>$data_di_nascita
]

87
Elaborato di informatica | Davide d'Auria

);
return $StudentId;
}
}
Classes/user.php
<?php
class UserManager extends DBManager {
public function __construct () {
parent::__construct();
$this->tableName='user';

$this-
>columns=['ID','id_classe','email','password','user_type_id','id_studente','id_docente'];

public function passwordsMatch($password, $confirm_password) {


return $password == $confirm_password;
}

public function register($email, $password, $id_studente ){


$result = $this->db->query("SELECT * FROM user WHERE email='$email'");
if (count($result)>0) {
return false;
}
$userId=$this->create(
[

88
Elaborato di informatica | Davide d'Auria

'id_classe'=>1,
'email'=>$email,
'password'=>$password,
'user_type_id'=>1,
'id_studente'=>$id_studente
]
);
return $userId;
}

public function login($email, $password) {

$result = $this->db->query("
SELECT *
FROM user
WHERE email='$email'
AND password='$password';
");

if (count($result) > 0) {
$user=(object)$result[0];
$this->_setUser($user);
return true;
}

return false;

89
Elaborato di informatica | Davide d'Auria

private function _setUser($user) {


$userToStore= (object) [
'id'=> $user->id,
'email'=> $user->email,
'is_admin'=> $user->user_type_id == 2
];
$_SESSION['user']=$userToStore; //salviamo la variabile user in sessione
}

?>

Autenticazione/index.php
<?php $page=isset($_GET["page"]) ?
$_GET["page"]
: 'login.php' ;?>

<?php include '../inc/inizializzazione.php' ?>

<?php include root_path . 'public/template parts/header.php' ?>

<?php include root_path . 'autenticazione/pages/' . $page ?>

90
Elaborato di informatica | Davide d'Auria

<?php include root_path . 'public/template parts/footer.php' ?>

Autenticazione/pages/aggiungi-studente.php

<div class="header1">

<div class="overlay reveal">

<h1 class="mtorg-3 Big-text">Inserisci un nuovo studente</h1>

</div>
</div>

<form class="mtorg-2 reveal" method="post">

<div class="form-group">
<label class="intro-text ts" for="nome">nome</label>
<input name="nome" id="nome" type="text" class="form-control" required>
</div>
<div class="form-group">
<div class="form-group">
<label class="intro-text ts" for="cognome">cognome</label>

91
Elaborato di informatica | Davide d'Auria

<input name="cognome" id="cognome" type="text" class="form-control"


required>
</div>

<label class="intro-text ts" for="data_di_nascita">data_di_nascita</label>


<input name="data_di_nascita" id="data_di_nascita" type="date" class="form-
control" required>
</div>

<button class="button mtorg-1" type="submit" name="aggiungi">Aggiungi uno


studente</button>
</form>

Autenticazione/pages/login.php
<?php
$errorMsg='';

if ($loggedInUser) {
echo '<script>location.href="http://localhost/tutorial_php/public/?
page=homepage.php"</script>';
exit;
}

if (isset($_POST['login'])) {
$email=$_POST['email'];
$password=$_POST['password'];

92
Elaborato di informatica | Davide d'Auria

$UserMgr= new UserManager();


$result=$UserMgr->login($email, $password);

if ($result) {
echo '<script>location.href="http://localhost/tutorial_php/public/?
page=homepage.php"</script>';
exit;
} else {
$errorMsg='Login Fallito';
}

?>

<div class="header1">

<div class="overlay reveal">

<h1 class="mtorg-3 Big-text">Accedi ora al tuo account!</h1>

93
Elaborato di informatica | Davide d'Auria

</div>
</div>

<form class="mtorg-2 reveal" method="post">


<div class="form-group">
<label class="intro-text ts" for="email">Email</label>
<input name="email" id="email" type="text" class="form-control" required>
</div>
<div class="form-group">
<label class="intro-text ts"for="password">Password</label>
<input name="password" id="password" type="password" class="form-
control" required>
</div>
<div class"text-danger">
<?php echo $errorMsg ?>
</div>
<button class="button mtorg-1" type="submit" name="login">accedi</button>
</form>
Autenticazione/pages/logout.php
<?php
unset($_SESSION['user']);
echo '<script>location.href="http://localhost/tutorial_php/public/?
page=homepage.php"</script>';
exit;

?>
Autenticazione/pages/register.php
<?php

94
Elaborato di informatica | Davide d'Auria

$errorMsg='';

if (isset($_POST['register'])) {
$email=$_POST['email'];
$password=$_POST['password'];
$id_studente=$_POST['id_studente'];

$confirm_password=$_POST['confirm_password'];

$UserMgr= new UserManager();


if ($UserMgr->passwordsMatch($password, $confirm_password)) {
$result=$UserMgr->register($email, $password,$id_studente);

if ($result) {
echo '<script>location.href="http://localhost/tutorial_php/public/?
page=homepage.php"</script>';
exit;
} else {
$errorMsg='Email già in uso';
}
} else {
$errorMsg='le password non corrispondono';
}

95
Elaborato di informatica | Davide d'Auria

?>

<div class="header1">

<div class="overlay reveal">

<h1 class="mtorg-3 Big-text">Registra subito un nuovo utente!</h1>

</div>
</div>

<form class="mtorg-2 reveal" align="center" method="post">

<div class="form-group">
<label class="intro-text ts" for="email">Email</label>
<input name="email" id="email" type="text" class="form-control" required>
</div>
<div class="form-group">
<div class="form-group">
<label class="intro-text ts" for="id_studente">Matricola Studente</label>
<input name="id_studente" id="id_studente" type="text" class="form-control"
required>

96
Elaborato di informatica | Davide d'Auria

</div>

<label class="intro-text ts" for="password">Password</label>


<input name="password" id="password" type="password" class="form-
control" required>
</div>
<div class="form-group">
<label class="intro-text ts" for="confirm_password">Conferma
Password</label>
<input name="confirm_password" id="confirm_password" type="password"
class="form-control" required>
</div>
<div class"text-danger">
<?php echo $errorMsg ?>
</div>

<button class="button mtorg-1" type="submit" name="register">Registra


Account</button>

</form>
FINE

97
Elaborato di informatica | Davide d'Auria

PUNTO 6
Si descrivano i principali tipi di rischi, legati a eventi accidentali o intenzionali,
che possono dar luogo a violazione della sicurezza di un sistema informatico
aziendale connesso in rete.
I benefici che Internet procura alle aziende sono veramente numerosi: praticare l’e-
commerce, fornire un migliore servizio ai clienti, ridurre i costi di comunicazione e
accedere velocemente e facilmente alle informazioni sono solo alcuni dei vantaggi
offerti dalla Rete; tuttavia, esiste anche un’altra faccia della medaglia in quanto
l’azienda, entrando in comunicazione con l’esterno, può molto più facilmente
risultare esposta all’azione di attacchi da parte di malintenzionati. Al centro
dell’interesse di ogni società vi è dunque la sicurezza delle reti di comunicazione e
dei sistemi informativi e la protezione dei meccanismi di difesa per garantire e
tutelare l’accessibilità solo a coloro che ne sono autorizzati.
Con sicurezza informatica si indica l’insieme dei prodotti, dei servizi, delle
regole organizzative e dei comportamenti individuali che proteggono i sistemi
informatici di un’azienda. Ha il compito di proteggere le risorse da accessi
indesiderati, garantire la riservatezza delle informazioni, assicurare il
funzionamento e la disponibilità dei servizi a fronte di eventi imprevedibili.
Allo scopo di assicurare un alto ed efficace livello di sicurezza delle reti è stato
istituito il CERT (Computer Emergency Response Team), composto da un gruppo di
esperti nell’ambito della sicurezza e istituito dal DARPA (Defense Advanced
Research Projects Agency). Oltre al CERT centrale, ogni nazione ha istituito un

98
Elaborato di informatica | Davide d'Auria

proprio CERT nazionale che, oltre a fornire informazioni, effettua anche formazione
nell’ambito della sicurezza.
LE MINACCE INFORMATICHE
Da una prima classificazione delle possibili situazioni che pregiudicano l’integrità dei
dati emergono due tipologie di minacce:
 minacce naturali;
 minacce umane.
LE MINACCE NATURALI
Le minacce naturali sono dovute a calamità imprevedibili quali tempeste,
inondazioni, fulmini, incendi e terremoti, praticamente impossibili da impedire e
prevenire. Per proteggersi da questo tipo di minacce esistono anche specifiche
disposizioni legislative (come la legge n.196/2003) che prevedono la messa in atto di
misure preventive destinate alle operazioni di disaster recovery, predisponendo dei
piani di ripristino e di emergenza.

LE MINACCE UMANE
Le minacce umane sono dovute a soggetti che hanno interessi personali ad acquisire
le informazioni di una azienda (o di un soggetto) o a limitare l’operatività delle
organizzazioni danneggiando i normali processi aziendali.
Le minacce umane intenzionali possono essere dovute a soggetti con interessi
personali ad acquisire informazioni o a limitare l’operatività dei processi aziendali,
mossi dalla ricerca di un guadagno economico, politico o semplicemente per
divertimento.
Un attacco intenzionale può scaturire:
 da personale interno (ex dipendenti, dipendenti scontenti o malintenzionati). I
dipendenti conoscendo i sistemi di sicurezza e la struttura del sistema
informativo, in possesso di autorizzazioni per l’accesso al sistema stesso
possono carpire informazioni o inserire nei sistemi codice malevolo più
facilmente come virus, trojan horse o worm in grado di provocare anomalie
di funzionamento in uno o più nodi della rete e trasmettere informazioni del
sistema informativo verso l’esterno (p. es. spyware), oppure creare una testa di
ponte verso l’interni (backdoor).;

99
Elaborato di informatica | Davide d'Auria

 da soggetti esterni. Da parte dei cosiddetti cracker individui simili agli


hacker, il cui scopo è però quello di carpire informazioni o arrecare danno.
Questi soggetti grazie a programmi come gli “sniffer”, intercettano i dati e
individuano le password per accedere ai sistemi.
LE MINACCE IN RETE
Il problema della sicurezza è “esploso” con la diffusione della comunicazione in
broadcast che avviene generalmente su linee condivise, con la quale la rete aziendale
è maggiormente passibile di accessi indesiderati da host esterni aventi lo scopo di
compromettere le funzionalità della rete o carpirne informazioni di interesse.
GLI OBIETTIVI DI SICUREZZA
Garantire la sicurezza di un sistema informativo significa impedire l’accesso o l’uso
non autorizzato delle sue informazioni e risorse, evitando o cercando di mitigare
l’impatto dei danni che ne possono derivare in caso contrario.
Ecco gli obiettivi fondamentali, da verificare tramite una corretta valutazione del
rischio:
 la disponibilità. Assicurare la continua disponibilità per ogni utente
autorizzato ad usufruire di dati e risorse;
 la riservatezza. Le informazioni devono essere leggibili e comprensibili solo
agli utenti autorizzati;
 l’integrità. Rispettare l’integrità dei documenti salvaguardandoli da alterazioni
e modifiche non autorizzate, anche involontarie, per prevenire danneggiamenti
o perdita di dati;
 l’autenticazione. La certificazione dell’identità di un utente deve essere
garantita attraverso un processo di riconoscimento del soggetto che esegue
determinate operazioni. L’identificazione per l’accesso al sistema informativo
può avvenire attraverso la conoscenza di informazioni riservate quali le
credenziali, oppure tramite device quali smart card, token e strumenti di
riconoscimento biologici (riconoscimento visivo, impronta digitale);
 l’autorizzazione. L’utente una volta autenticato per l’accesso al sistema, deve
poter agire, accedere, consultare e modificare risorse e dati secondo
determinati permessi e autorizzazioni;
 il non ripudio. ogni documento, messaggio o firma prodotti devono essere
associati ad un soggetto autenticato ed autorizzato, senza possibilità di ripudio
della paternità.
LA VALUTAZIONE DEL RISCHIO

10
0
Elaborato di informatica | Davide d'Auria

La valutazione del rischio deve essere esaminata così come si fa con un qualunque
processo aziendale, ovvero prevedendo delle fasi e studiandone le singole
componenti costituenti:
 si individuano gli asset ovvero i beni, i dati, le risorse umane e le tecnologiche
necessari per la fruizione di ogni servizio;
 si individuano per ogni servizio le vulnerabilità per ciascun asset;
 per ciascuna vulnerabilità si individuano le possibili minacce, intese come
evento intenzionale (attacco) o accidentale che può causare la perdita di una
proprietà di sicurezza. Si procede con una stima probabilistica della
verificabilità della minaccia e del suo grado di danno;
 per ogni minaccia si individuano e studiano le possibili contromisure
necessarie ed effettivamente implementabili, valutando il miglior rapporto
costo/benefici;
 si procede con l’implementazione delle contromisure individuate;
 si procede al test di ciascuna contromisura per valutarne efficacia ed efficienza.

Con attacco a un sistema informatico si intendono i tentativi di accesso non


autorizzato a un sistema informativo, che possono essere distinti in due tipologie:
 attacchi dimostrativi, non pericolosi, volti a dimostrare l’abilità del cracker;

10
1
Elaborato di informatica | Davide d'Auria

 attacchi criminali, vale a dire minacce all’accesso delle informazioni volte


all’intercettazione o alla modifica di dati non propri, e minacce ai servizi, per
impedire l’utilizzo di determinati servizi agli utenti.
Gli attacchi criminali possono essere ulteriormente distinti in attacchi passivi e
attacchi attivi.

ATTACCHI PASSIVI
Attacchi che non producono effetti immediati visibili e per questo molto difficili da
rilevare. Si distinguono in:
 lettura del contenuto delle comunicazioni, per esempio mediante
l’intercettazione di pacchetti sulla LAN (sniffing);
 analisi del sistema e del traffico di rete, senza analizzare i contenuti.
ATTACHI ATTIVI
Le principali tipologie di attacchi attivi sono invece descritte di seguito.
 Intercettazione: mira a intercettare le password per avere accesso al sistema
ed effettuare modifiche ai dati. È possibile che per effettuare l’intercettazione
sia necessario un attacco preventivo per installare componenti hardware
(dispositivi pirata) o software specifici. Potrebbero per esempio essere
inseriti nella rete dei server pirata (shadow server) che si spacciano per i
server originali nei quali sono state modificate le tabelle di routing (spoofing),
oppure venire installati programmi che emulano servizi del sistema
registrando al contempo le informazioni riservate digitate dall’utente.
 Sostituzione di un host. sempre tramite la modifica delle tabelle di
indirizzamento dei router (IP spoofing), qualcuno si sostituisce a un host
falsificando l’indirizzo di rete del mittente. Questo tipo di attacco prende il
nome di source address spoofing e ha lo scopo di effettuare la falsificazione di
dati mediante l’accesso non autorizzato ai sistemi informativi.
 Produzione: i malintenzionati producono nuovi componenti che vengono
inseriti nel sistema con lo scopo di causare un danno e non di prelevare
informazioni. Le principali tecniche di disturbo sono le seguenti:
o attacchi virus: programmi che provocano danni e si replicano
“infettando” altri host;
o attacchi tramite worm: la caratteristica di questo tipo di attacco è che
si replica senza bisogno di “attaccarsi” a un altro programma
provocando danni proprio perché “consuma risorse”.

10
2
Elaborato di informatica | Davide d'Auria

o attacchi di disturbo denial of service (DoS): in questa categoria


rientrano le tecniche che mirano a “tenere occupato” un host con
operazioni inutili così da impedire che possa offrire i propri servizi alla
rete;
o e-mail bombing e spamming infetto: consistono nell’invio di enormi
quantità di messaggi e-mail, o per mandare in crash il server di posta, o
per carpire dati personali, come le rubriche con gli indirizzi del
destinatario, o comportandosi da trojan per inviare malware occulti.
I PILASTRI DELLA SICUREZZA INFORMATICA
I “pilastri” su cui si fonda la sicurezza sono essenzialmente tre:
 prevenzione (avoidance), mediante protezione dei sistemi e delle
comunicazioni (crittografia, firewall, VPN ecc.);
 rilevazione (detection), mediante il monitoraggio e il controllo degli accessi
tramite autenticazione con password e certificati;
 investigazione (investigation), con l’analisi dei dati, il controllo interno grazie
al confronto e alla collaborazione degli utenti ecc.
le principali tecniche sulle quali si basa la prevenzione sono:
 Uso della crittografia: la crittografia garantisce la riservatezza delle
informazioni e l’integrità dei dati trasmessi;
 Autenticazione degli utenti: l’autenticazione garantisce di riconoscere in
modo univoco l’identità dell’interlocutore remoto in modo da avere la
sicurezza sulla autenticità e la paternità delle informazioni;
 Firewall: è un sistema hardware-software dedicato alla difesa perimetrale di
una rete, che agisce filtrando il traffico di pacchetti entranti e/o uscenti secondo
delle regole precedentemente definite; in fase di configurazione di un firewall,
per prima cosa, si deve decidere la politica di default per i servizi di rete:
o default deny: tutti i servizi non esplicitamente permessi sono negati;
o default allow: tutti i servizi non esplicitamente negati sono permessi.
 Reti private e reti private virtuali: è possibile acquistare direttamente presso
gli operatori delle reti pubbliche una linea a uso esclusivo della azienda (reti
private), ma con costi considerevoli, oppure realizzare una rete privata virtuale
VPN, creando dei tunnel protetti sulle infrastrutture di Internet.

10
3

Potrebbero piacerti anche