4E e 4i SIA: Gestione completa Php, file di testo, login e sessioni
Lezione a cura di Paolo Latella
Lodi 6 novembre 2025
Buongiorno a tutti. Oggi analizzeremo l'esercizio che
abbiamo di fronte, un'applicazione web completa scritta in PHP. L'obiettivo è
capire come si passa da una semplice procedura che gestisce dati a
un'applicazione sicura e protetta da password.
Possiamo dividere l'intero esercizio in due fasi principali:
- Fase
1: Il "CRUD" di Base (Create, Read, Update, Delete)
- Fase
2: L'Aggiunta della Sicurezza (Login e Sessioni)
Fase 1:
Il "CRUD" di Base (I 5 file originali)
All'inizio, abbiamo 5 file che lavorano insieme per gestire
un elenco di "prenotazioni". L'aspetto interessante è che non usiamo
un database complesso come MySQL, ma un semplice file di testo (prenotazioni.txt)
come nostro "database".
Ecco i ruoli dei 5 file originali:
- setting.php
- È
il file di configurazione. Al momento, il suo unico scopo è definire il
nome del file di testo che useremo, memorizzandolo nella variabile $my_database_txt.
- inserimento.php
- È
la "C" di CRUD (Create).
- Mostra
all'utente un modulo HTML.
- Permette
di inserire i dati di una nuova prenotazione: nome cliente, prodotto,
quantità, prezzo e note.
- Quando
si preme "Salva", i dati vengono inviati in POST al file action.php.
- lettura.php
- È
la "R" di CRUD (Read).
- È
la pagina principale che mostra i dati.
- Legge
l'intero file di testo (prenotazioni.txt) riga per riga.
- Per
ogni riga, usa la funzione explode("|", $riga) per separare i
dati (che sono divisi da un simbolo |).
- Stampa
i dati in una tabella HTML ben formattata.
- Funzione
chiave: Mostra anche un campo "TOTALE" che è stato
calcolato e salvato in precedenza.
- Per
ogni riga, crea due link: "Modifica" (che punta a modifica.php)
e "Cancella" (che punta a action.php).
- modifica.php
- È
la "U" di CRUD (Update).
- Riceve
l'ID (il numero di riga) della prenotazione da modificare tramite l'URL
(con $_GET['id']).
- Legge
il file di testo, trova la riga specifica e ne estrae i dati.
- Mostra
un modulo HTML pre-compilato con i dati esistenti.
- Quando
si preme "Salva Modifiche", invia i dati e l'ID della riga al
file action.php.
- action.php
- Questo
è il "cervello" dell'applicazione. Non ha HTML, è pura logica
PHP.
- Gestisce
tre diverse operazioni:
- Inserimento
(if (isset($_POST['scrivi']))): Riceve i dati da inserimento.php.
Calcola il totale ($totale = $quantita_num * $prezzo_unitario_num).
Compone la stringa finale (separata da |) e la aggiunge in fondo al file
di testo.
- Eliminazione
(else if (isset($_GET['delete']))): Riceve da lettura.php l'ID della
riga da cancellare. Legge tutte le righe del file in un array, rimuove
l'elemento specificato (unset) e poi riscrive l'intero file da zero
senza quella riga.
- Modifica
(else if (isset($_POST['modifica']))): Riceve i dati da modifica.php.
Ricalcola il totale. Legge tutte le righe in un array, ma questa volta sostituisce
la vecchia riga con quella nuova modificata. Infine, riscrive l'intero
file.
- In
ogni caso, dopo aver finito, usa header("location:
lettura.php"); per reindirizzare l'utente alla pagina principale.
Il problema di questa fase: Funziona, ma non è
sicura. Chiunque conosca l'indirizzo del sito può vedere, aggiungere e
cancellare le prenotazioni.
Fase 2:
L'Aggiunta della Sicurezza (I 4 file nuovi)
Ora, l'esercizio ci chiede di "blindare"
l'applicazione. Vogliamo che solo un utente con username e password possa
accedere. Per fare questo, usiamo le Sessioni PHP.
Cos'è una Sessione? È come un "pass"
digitale. Quando l'utente fa il login, gli diamo un pass. Finché ha quel pass,
può visitare le pagine protette. Se prova a entrare senza pass (o con un pass
scaduto), lo respingiamo alla pagina di login.
Per implementare questo, modifichiamo i nostri file e ne
aggiungiamo 4 nuovi:
- login.php
(Nuovo)
- È
una semplice pagina HTML con un modulo che chiede "Username" e
"Password". Sarà la nuova pagina di ingresso del sito.
- check_login.php
(Nuovo)
- È
il "buttafuori". login.php invia i dati qui.
- Questo
file avvia la sessione (session_start()).
- Controlla
se l'username e la password inviati corrispondono a quelli che abbiamo
salvato (li salveremo in setting.php).
- Se
le credenziali sono corrette, registra il pass nella sessione,
scrivendo: $_SESSION['utente_loggato'] = true;.
- Infine,
reindirizza l'utente a lettura.php. Se le credenziali sono errate, lo
rimanda a login.php con un messaggio di errore.
- check_session.php
(Nuovo)
- Questo
è il "guardiano" di ogni singola pagina. È un file piccolissimo
ma fondamentale.
- Il
suo codice fa solo due cose:
- Avvia
la sessione (session_start()).
- Controlla
se il "pass" ($_SESSION['utente_loggato']) non esiste o
non è true.
- Se
il pass non c'è, reindirizza forzatamente l'utente a login.php (header("location:
login.php");) e ferma l'esecuzione dello script.
- Se
il pass esiste, il file non fa nulla, e il resto della pagina PHP viene
eseguito normalmente.
- logout.php
(Nuovo)
- Una
pagina semplice che "distrugge" il pass.
- Esegue
session_destroy() per cancellare la sessione e reindirizza l'utente a login.php.
Modifiche finali ai file esistenti:
- setting.php:
Ora, oltre al nome del file, conterrà anche le credenziali:
PHP
$admin_user
= "admin";
$admin_pass
= "password123";
- lettura.php,
inserimento.php, modifica.php, action.php:
La modifica è identica per tutti e quattro. Come primissima
riga di ognuno di questi file, aggiungiamo:
PHP
<?php
include("check_session.php");
?>
In questo modo, prima che qualsiasi codice HTML o PHP di
queste pagine venga eseguito, il nostro "guardiano" (check_session.php)
fa il suo controllo.
Riepilogo
dell'esercizio
Partendo da 5 file che gestiscono dati su un file di testo,
abbiamo aggiunto un sistema di autenticazione. Abbiamo creato 4 nuovi file per
gestire il login, il logout e il controllo del "pass" (la sessione),
e abbiamo protetto tutti i file esistenti includendo il nostro
"guardiano" check_session.php all'inizio di ognuno.
Il risultato è un'applicazione web che non solo funziona, ma
è anche sicura e accessibile solo agli utenti autorizzati.
Il cuore
della procedura
La spiegazione
del cuore della procedura che si trova nella pagina action.php la trovate sul
mio blog all’indirizzo:
https://paololatella.blogspot.com/2025/11/4e-e-4i-sia-la-pagina-actionphp.html

Commenti
Posta un commento