Far scadere manualmente delle pagine web
Immaginate questa situazione: l'utente del vostro sito,
dopo essere passato attraverso una serie di pagine durante un
processo di registrazione, e dopo aver premuto il tasto
"conferma"(submit), non deve avere la
possibilità di tornare indietro a pagine
precedenti.
Come fate a "far scadere" manualmente una pagina
web e, eventualmente, reindirizzare l'utente ad una nuova
pagina o mostrargli un messaggio di errore personalizzato?
Seguite questo procedimento, che andiamo a suddividere in 4 fasi:
1. l'entry script
2. l'istruzione di Cache-control
3. il controllo condizionale
4. la "scadenza" manuale di una porzione di
sessione
L'ENTRY SCRIPT
Usiamo un entry script per iniziare la nostra sessione.
Questo compie due cose: "distrugge" una sessione
già in corso e inizia una nuova sessione.
entry.php:
<?php
session_start();
session_unset();
session_destroy();
session_start();
session_register('alive');
$_SESSION["alive"] = "1";
Header("Location:/php/createaccount.php");
?>
Analizziamo lo script qui sopra: per prima cosa iniziamo una
nuova sessione con la funzione session_start(), con la
funzione session_unset() eliminiamo tutte le variabili di
sessione registrate e con il comando session_destroy()
andiamo a "distruggere" la sessione.
Dopodiché iniziamo una nuova sessione e registriamo
la variabile di sessione.
Questa particolare variabile andrà a verificare se
questa porzione di sessione è ancora
"attiva" oppure no.
Diamo un valore alla variabile, e infine reindirizziamo
l'utente alla nostra prima pagina del processo di
registrazione.
IL CACHE-CONTROL E IL CONTROLLO
CONDIZIONALE
Nel seguente frammento di codice, facciamo
un'auto-verifica per determinare se la sessione è
ancora in uso.
createaccount.php:
<?php
session_start();
header("Cache-control: must-revalidate");
if ($_SESSION["alive"] != "1") {
// User is attempting to go back after the session was destroyed
Header("Location:/php/error100.php");
}
?>
L'istruzione cache-control è molto importante.
Usando "must-revalidate" diciamo al browser di
andare a prendere la pagina dal server invece di caricarla
dalla sua cache.
Così facendo, il browser andrà a ricontrollare
se il valore della variabile $_session["alive"]
è "1".
In caso affermativo la pagina verrà caricata
correttamente, mentre in caso contrario l'utente
verrà indirizzato ad un'altra pagina che contiene
un messaggio di errore personalizzato.
Questo script va inserito all'inizio di ogni pagina
nella serie di registrazione perché si ha un maggiore
controllo su ogni pressione del tasto
"indietro"(back) da parte dell'utente.
Non ha senso metterlo nell'ultima pagina della serie di
registrazione perché l'utente potrebbe premere il
tasto "indietro" più volte.
"FAR SCADERE" MANUALMENTE LA
SESSIONE
L'ultima cosa da fare è quella di far scadere
manualmente la sessione o almeno una parte di essa.
Nei miei esempi volevo che la sessione fosse attiva,
così non ho utilizzato le funzione session_unset() e
session_destroy(), ma non volevo che l'utente tornasse
indietro a pagine precedenti per fare delle modifiche.
Ricordate la variabile $_session["alive"]?
Tutto quello che dobbiamo fare è andare a eliminarla,
dopo la conferma finale con la pressione del tasto
"submit" (conferma).
Ci sono due modi per fare questo:
<?php
session_start();
$_SESSION["alive"] = "0";
?>
oppure
<?php
session_start();
session_unregister('alive');
?>
Entrambi questi modi permettono di effettuare la stessa
cosa.
Ora, se l'utente andrà a premere il tasto
"indietro" (back), non sarà in grado di
tornare indietro a pagine precedenti e cambiare i dati
inseriti, ma verrà indirizzato a error100.php (o a
qualunque pagina voi sceglierete) e verrà visualizzato
un messaggio di errore.
Siamo arrivati alla fine di questo articolo.
Queste sono le cose da ricordare:
* l'entry script setta il valore della variabile di
sessione su "attivo" , mentre l'exit script
(cioè dopo la conferma finale dell'utente) lo
setta su "non attivo";
* la funzione "cache-control: must-revalidate"
obbliga il browser a ricaricare la pagina dal server per
avere la variabile di sessione ad uno stato
"attivo";
* l' indirizzamento dell'utente ad un'altra
pagina, avviene quando la variabile di sessione è in
uno stato "non attivo".
- Articolo precedente L'importanza di saper gestire al meglio "gli errori" di Php
- Articolo successivo L'impaginazione con PHP
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!