|
Introduzione alle sessioni. Come
creare pagine protette.
Vediamo
in questo tutorial come sfruttare le potenzialità delle
sessioni, ovvero come renderci il lavoro più facile se
abbiamo bisogno di portarci dietro in diverse pagine un
alto numero di variabili.
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
<!-- Inizio codice --> session
start();
<!-- Fine codice © by Simonet -->
che serve appunto a creare una
sessione. Fatto? Non ci crederete, ma abbiamo già
finito. Adesso vi basterà
scrivere:
<!-- Inizio codice --> $_SESSION['prova'] =
"Ciao";
<!-- Fine codice © by Simonet -->
oppure:
<!-- Inizio codice --> $prova =
"ciao"; session_register('prova');
<!-- Fine codice © by Simonet -->
affinchè in
ogni vostra pagina la variabile di sessione "prova"
abbia il valore "Ciao".
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 cointenuto della nostra pagina
"form.htm":
<!-- Inizio codice --> <form name="login"
action="controlla.php" method="POST"> <input
type="text" name="username"
value="Username..."><br> <input
type="text" name="password"
value="Password..."><br> <input
type="submit"
value="Login..."> </form>
<!-- Fine codice © by Simonet -->
Questa
la nostra applicazione PHP (che chiameremo
"controlla.php"):
<!-- Inizio codice --> <? $user = "luca"; $pass
= "costantino";
if ($_POST['username'] == $user
&& $_POST['password'] == $pass)
{ session_start(); $_SESSION['login'] = "ok"; }
else { header("Location:
form.htm"); } ?>
<!-- Fine codice © by Simonet -->
Questo, per
finire, il contenuto del file "inclusione.php":
<!-- Inizio codice --> <? session_start(); if
($_SESSION['login'] != "ok") { header("Location:
form.htm"); } ?>
<!-- Fine codice © by Simonet -->
La pagina
"form.htm" contiene un semplice form, che tramite il
metodo POST passa alla pagina "controlla.php" due
variabili, rispettivamente username e
password.
La pagina "controlla.php" si limita a
controllare che i valori immessi nel form corrispondano
a due valori da noi scelti.
$user =
"luca"; Creo una variabile di nome $user e le assegno
il valore "luca".
$pass = "costantino"; Creo
una variabile di nome $pass e le assegno il valore
"costantino";
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:
<!-- Inizio codice --> include("inclusione.inc.php");
<!-- Fine codice © by Simonet -->
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".
|