|
Sessioni:
La sessione è il modo più semplice per riconoscere un utente da quando si collega al server
a quando interrompe il collegamento.
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 e gli assegna
un nome univoco. Analizza l'utente, raccoglie i dati che vogliamo e li salva 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.
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 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_destroy(); Funzione che distrugge una sessione.
session_register("..."); Salva una variabile nella sessione. (Si scrive solo il nome
senza $. Il valore della variabile va inserito nel codice sottostante, in pratica la
macchina lo salva da sola.)
session_unset(); Distrugge le variabile nella 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.)
Codice e dove inserirlo:
Solitamente una connessione si apre così:
<?
session_start();//Apriamo la sessione
session_register("nomevariabile");//Salviamo una variabile nella sessione
....//Calcoli o funzioni con la sessione
....
session_register("nomevariabile2");//Salviamo una variabile nella sessione
session_register("....");//Possiamo salvare quante variabili vogliamo
$nomevariabile=.....;//Definiamo la variabile
$nomevariabile2=.....;//Definiamo la variabile2
....//Calcoli o funzioni con la sessione
....
?>
Il codice per aprire una sessione va inserito prima del codice HTML.
Esempio:
<?
session_start();
....
?>
<HTML>
...
...
...
</HTML>
Esempio2:
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.
Per togliere i dubbi nati queste poche righe teoriche, vi invitiamo a leggere l'articolo
sul contatore con sessioni.
|
|
|
Script
| |
Motore di ricerca script
|
|