Redazione
a- a+

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

Ti potrebbe interessare anche

commenta la notizia

C'è 1 commento
Redazione
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!