Lezione per la 5 A Mercurio: Come creare pagine protette



Utilizzo delle potenzialità delle sessioni,  (necessità di utilizzo di  un alto numero di variabili in diverse pagine).
Le sessioni sono piccoli file di testo server side, ovvero salvati direttamente sul server che fa girare gli script, che possono contenere qualsiasi cosa noi vogliamo, per esempio varianili o dati in generale. A questo propostio, se volete usare le sessioni in locale, accertatevi di creare una cartella di nome "tmp" nel vostro hard disk. Generalmente il percorso di tale cartella sarà C:\tmp, ma se preferite un'altra posizione non c'è alcun problema: aprite il vostro php.ini (è salvato in c:\windows o c:\winnt a seconda delle versioni di windows), cercate la riga "session.save_path = /tmp" e modificatela con il il percorso che preferite...
Passiamo adesso alla sintassi: all'inizio di ogni pagina in cui vorrete usare le sessioni dovrete aggiungere la riga
session start();
che serve appunto a creare una sessione. Fatto? Non ci crederete, ma abbiamo già finito. Adesso vi basterà scrivere:
$_SESSION['classe5Amercurio'] = "laboratorio";
oppure:
$classe5Amercurio = "laboratorio"; session_register('classe5Amercurio');
affinchè in ogni vostra pagina la variabile di sessione "classe5Amercurio" abbia il valore "laboratorio".

Dov'è l'utilità di tutto ciò? Pensiamo per esempio ad un utente che inserisce dei dati in form. Tali dati verranno poi controllati dallo script per evitare che ci siano errori, per esempio indirizzi email in formato non valido, date di nascita fasulle o password che non combaciano.
In caso di errore sarebbe bello poter evitare all'utente di riempire nuovamente tutti i campi, e con le sessioni possiamo appunto realizzare questo. Certo, potremmo passare i dati del form tramite i metodi GET e POST, ma perchè avere un indirizzo chilometrico e rischiare infiltrazioni?
Vediamo adesso con un semplice script se abbiamo capito come usare le sessioni.
Si tratta di un modello MOLTO esemplificato di come creare delle pagine del sito nelle quali solo noi possiamo entrare.
Questo il contenuto della nostra pagina "form.htm":

<form name="login" action="controllo.php" method="POST">
<input type="text" name="username" value="Inserisci username..."><br>
<input type="text" name="password" value="Inserisci password..."><br>
<input type="submit" value="Login...">
<input type="reset" value="Cancella...">
</form>
Questa è la nostra pagina PHP (che chiameremo "controllo.php"):

<?
$user = "5Amercurio";
$pass = "succursale";
if ($_POST['username'] == $user && $_POST['password'] == $pass) {
 session_start();
 $_SESSION['login'] = "ok";
} else {
 header("Location: form.htm");
}
?>

Questo, per finire, il contenuto del file "inclusione.php":

<?
session_start();
if ($_SESSION['login'] != "ok") {
 header("Location: form.htm");
}
?>

La pagina "form.htm" contiene un semplice form, che tramite il metodo POST passa alla pagina "controllo.php" due variabili, rispettivamente username e password.

La pagina "controllo.php" si limita a controllare che i valori immessi nel form corrispondano a due valori da noi scelti.
$user = "5Amercurio"; Creo una variabile di nome $user e le assegno il valore "5Amercurio".
$pass = "succursale"; Creo una variabile di nome $pass e le assegno il valore "succursale";
if ($_POST['username'] == $user && $_POST['password'] == $pass) {
La riga può essere così commentata: SE il valore immesso nel form alla voce username corrisponde al valore user E SE il valore immesso nel form alla voce password corrisponde al valore pass
session_start(); ALLORA apri una sessione
$_SESSION['login'] = "ok"; e assegna alla variabile di sessione login il valore ok
} else {
ALTRIMENTI
header("Location: form.htm"); }
tornal alla pagina form.htm.
La pagina "inclusione.php" è il cuore del sistema, e dovrà essere inclusa in tutte le pagine (PHP) che vorrete proteggere, inserendo all'inizio della pagina una riga del tipo:

include("inclusione.inc.php");
Il codice della pagina si limita ad aprire una sessione, e a controllare che la variabile di sessione login abbia il valore "ok"; se tale variabile non esiste o non ha il valore desiderato, il visitatore è rimandato alla pagina del form, ovvero "form.htm".

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)