Come avviare una sessione PHP

La chiave per usare le sessioni PHP è la funzione session_start (). Si chiamare session_start () in ogni pagina e successivamente avere accesso a tutti gli elementi dell'array $ _SESSION.

Potrebbe sembrare un po 'di un nome strano per la funzione, session_start (), in quanto nella maggior parte delle pagine che ti vuole solo continuare la sessione e accedere alle variabili che non ci sono. Ma in realtà, session_start () fa entrambe: Si inizia una nuova sessione, se necessario, e continua una sessione esistente, se del caso.

La funzione session_start () viene chiamato semplicemente in questo modo:

<? Php

session_start ();

// Altre dichiarazioni PHP qui

?>

Ecco il codice per un paio di pagine che seguono, quando si accede alla prima pagina del ricorso. Questo mostra l'uso della funzione session_start () e quindi la creazione di una variabile per tenere il tempo di accesso iniziale.

Ecco il codice per la prima pagina, chiamata page1.php.

<? Php

session_start ();

$ _SESSION ['AccessTime'] = data ("M / D / Y g: i: sa");
print "Questa la pagina 1 <br />";

PRINT "accede l'applicazione su:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page2.php\"> Continua alla pagina successiva </a> </ div>";

?>

Se visto in un browser, la pagina si presenta come segue:

Come avviare una sessione PHP

La pagina successiva nell'applicazione poi avvia la sessione e può accedere a tutte le variabili già impostate nella sessione. Ecco il codice per la seconda pagina, page2.php.

<? Php

session_start ();

print "Questa la pagina 2 <br />";

PRINT "accede l'applicazione su:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Continua alla pagina successiva </a> </ div>";

?>

Avviso nel codice che la $ _SESSION variabile ['accessTime'] non è impostata di nuovo, ma semplicemente accede dopo la sessione viene avviata. Quando sei in page1.php e fa clic sul link per andare alla pagina successiva, si ottiene una pagina come questa:

Come avviare una sessione PHP

È possibile memorizzare qualsiasi cosa in una sessione, ma si deve essere consapevoli del fatto che la sessione può, e a volte non, sparire per una serie di motivi. Uno dei motivi di una sessione potrebbe scomparire è che il tempo è scaduto. Se gli utenti si siedono su una pagina per troppo tempo, la sessione potrebbe non essere lì quando cominciano utilizza nuovamente l'applicazione.

L'implicazione pratica della sessione scomparsa è che le variabili che avete precedentemente impostati anche scomparire. Pertanto, è buona norma verificare se la sessione contiene i valori previsti prima di utilizzarli.

Ci sono un paio di modi per farlo. Un modo sarebbe quello di controllare tutte le variabili prima di accedervi. Ad esempio, è possibile modificare il codice per verificare la ['accessTime'] variabile $ _SESSION prima di usarlo in uscita.

<? Php

session_start ();

if (isset ($ _ SESSION ['accessTime'])) {
die (header ("Location: page1.php"));
}

print "Questa la pagina 2 <br />";

PRINT "accede l'applicazione su:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Continua alla pagina successiva </a> </ div>";

?>

Questo elenco aggiunto il seguente codice:

if (isset ($ _ SESSION ['accessTime'])) {
die (header ("Location: page1.php"));
}

La posizione di tale codice è importante. Poiché tale codice deve inviare un header HTTP, deve apparire prima di qualsiasi altro output. Così, per esempio, se il codice è apparso sotto l'uscita "Questa la pagina 2", non avrebbe funzionato perché le intestazioni sono già state inviate. Il codice appare prima di ogni uscita, ma anche, soprattutto, appare dopo la funzione session_start ().

Le migliori pratiche è quello di verificare l'esistenza di variabili di sessione prima di utilizzarli, come appena dimostrato. Tuttavia, si può ottenere molto ingombrante per controllare tutte le variabili che si potrebbe utilizzare in una grande applicazione. Con questo in mente, un'altra opzione è quella di impostare una variabile di sessione globale e verificare la sua esistenza, piuttosto che ogni variabile individualmente. Ecco come fare.

Ecco una versione aggiornata del codice, page1.php. In questo codice, c'è un unico, inoltre, una nuova variabile di sessione chiamata appStarted.

<? Php

session_start ();

$ _SESSION ['AppStarted'] = true;

$ _SESSION ['AccessTime'] = data ("M / D / Y g: i: sa");

print "Questa la pagina 1 <br />";

PRINT "accede l'applicazione su:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page2.php\"> Continua alla pagina successiva </a> </ div>";

?>

È quindi possibile modificare altre pagine nella domanda per verificare l'esistenza di questa variabile, come nel cambiamento osservato.

<? Php

session_start ();

if (isset ($ _ SESSION ['appStarted'])) {
die (header ("Location: page1.php"));
}

print "Questa la pagina 2 <br />";

PRINT "accede l'applicazione su:". $ _SESSION ['AccessTime'];

print "<div> <a href=\"page3.php\"> Continua alla pagina successiva </a> </ div>";

?>