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".

 

torna al menu

- - -

Directory con Motore di ricerca di Moby Dyck.com