Descrizione delle sessioni con il linguaggio php, dalla costruzione alla gestione.
ALLWEB free
Web Directory Script Linguaggi
Italiano Inglese Tutte
 
 16 Apr 2014
aggiungi in preferiti  
Home    Mappa directory    Script




Sessioni php:

La sessione è il modo più semplice per riconoscere un utente da quando si collega al server a quando interrompe il collegamento internet.
Per essere più chiari immaginiamo di fornire una password per un'area protetta e poi di navigare. Per ogni nuova pagina dovremo ridigitare la password, ma non è così. Questo perché la nostra sessione è sempre attiva, di conseguenza il server si ricorda che abbiamo già inserito la password e siamo abilitati.

Il funzionamento delle sessioni è molto semplice, il server apre una sessione con la funzione session_start()e gli assegna un nome univoco.
Le variabili di sessione sono memorizzate dentro un array globale di nome $_SESSION[], salvato in un file che porta lo stesso nome della sessione.
Nello stesso tempo deposita un cookie nella macchina dell'utente. Ogni volta che ne ha bisogno dal cookie estrae i dati per risalire alla sessione e al file salvato. In pratica abbiamo una memoria virtuale salvata sul server.
Ogni volta che interrompiamo il collegamento il server cancella tutto (cookie compreso).

Importante:
Come abbiamo visto la sessione salva un cookie nel browser di chi naviga. Per ottenere questo dobbiamo porre la funzione che inizia la sessione (session_start()) prima di ogni altro dato in output dal server. In pratica nessun altra funzione di uscita deve precedere questa funzione, neppure il codice HTML!!



Funzioni e codici:

session_start();
Funzione che apre una sessione.
$_SESSION['nomevariabile'];
Questa riga crea l'array globale che contiene tutte le variabili di sesssione.
session_unset();
Distrugge le variabile nella sessione.
session_destroy();
Funzione che distrugge una sessione.
$PHPSESSID
Il nome della variabile globale che contiene il codice univoco di 32 caratteri che distingue la sessione. (Se scriviamo echo $PHPSESSID; scriviamo 32 caratteria a video se la sessione è attiva.)
Se per motivi di protezione non è possibile utilizzare direttamente la variabile $PHPSESSID è possibile inserire la funzione session_id();
esempio:
$PHPSESSID=session_id();
session_set_cookie_params();
Imposta il numero di secondi di inattività oltre i quali la sessione è cancellata. Se non è impostata utilizza le impostazioni di default del file php.ini contenuto sul server.



Codice e dove inserirlo:

La funzione che attiva una sessione, ed è la prima da inserire è session_start().
Per creare l'array globale di sessione è sufficente scrivere $_SESSION[], per creare variabili da inserire dentro l'array possiamo scrivere $_SESSION['user']=$user;

Esempio:
<?
session_start();
$_SESSION['user']=$user;
....
?>
<html>
<head>
....
</head>
<body>
....
</body>
</html>
Le variabili di sessione possono essere create, utilizzate o modificate in qualunque posto della pagina, purché la sessione sia stata attivata prima di ogni altro tag o istruzione. La funzione session_start non può essere preceduta da nessun output a video.


Distruzione di una sessione:

Nel caso si voglia distruggere una sessione e riaprirne un'altra, magari perchè alcuni dati non influenzino la pagina corrente si può scrivere così:
<?
session_start();//Distruggo la vecchia sessione
session_unset();
session_destroy();
session_start();//Apro una nuova sessione
....
?>
<html>
...



Altra soluzione:

Come abbiamo visto una sessione salva un cookie nel browser utente.
Ma se il navigatore non ha i cookie abilitati? Semplice, non si apre la sessione.

Per ovviare a questo problema il linguaggio PHP ci mette a disposizione un'altra soluzione, che però perde in sicurezza.
In questo caso possiamo passare i dati tramite URL, ossia le query string.
La sicurezza di questo procedimento è compromessa dal fatto che un malintenzionato potrebbe prendere nota del codice di sessione. (possibilità comunque remota).

Per procedere con questa soluzione dobbiamo inserire un codice in ogni collegamento (link) a pagine che necessitano della sessione.

<A HREF="nuovapagina.php?<?php echo SID?>">clicca qui</A>


Come abbiamo visto all'interno della query abbiamo inserito <?php echo SID?>. Questa istruzione può essere inserita solo in query che puntano a pagine del nostro sito (per ragioni di sicurezza).

SID è una costante che viene definita solo se il browser utente non supporta i cookies. Nel caso sia stato spedito il cookie SID è una costante stringa vuota, pertanto non comporterà nessun problema di gestione.


Sessioni in versioni PHP precedenti alla 4.0.1:

L'array globale di sessione è stato introdotto dalla versione PHP4.0.1. In precedenza le sessioni si attivavano sempre con la funzione session_start(), ma per creare le variabili di sessione era necessario dichiararle con la funzione session_register("nomevariabile"); Il valore della variabile si inseriva nel codice sottostante, in pratica la macchina lo salvava da sola.
Esempio:
<?
session_start();//Apriamo la sessione
session_register("nomevariabile");//Salviamo una variabile nella sessione, ne possiamo salvare quante ne vogliamo
$nomevariabile=...;//Definiamo la variabile
....
?>



Per togliere i dubbi nati queste poche righe teoriche, vi invitiamo a leggere l'articolo sul contatore con sessioni.