paolo@bimodesign.com | +34 608 61 64 10

Framework

        

PHP - Mantenere dati di SESSION dopo chiusura finestra

Anche se concettualmente sbagliato (non ha senso infatti mantenere dati di SESSION quando l'applicazione ha terminato) potrebbe capitare che per questioni di praticit nello scrivere il codice, non potete salvare tutta la struttura di una variabile di SESSION in una tabella, ma avrete necessit di assegnarla cos com' di nuovo all'apertura dell'applicazione.
Procediamo nel seguente modo,

1) Salviamo i dati in un campo TEXT di una tabella MySql o su un file di testo. Se la struttura presenta dimensioni notevoli, ipotizzare di usare MEDIUMTEXT o LONGTEXT, evitando cos che i dati vengano troncati e quindi poi inutilizzabili.

2) Salvataggio dati in tabella, usando questa istruzione

$oProjectTable= new ClassProjectTable;
$oProjectTable->setSessionVariable(serialize($_SESSION['PROJECT']['MODULE']['AREASINFO']));

dove...
- setSessionVariable il metodo della classe ClassProjectTable che assegna il valore e successivamente, con il metodo insert lo inserisce nella base dati, nel campo session_variable
- $_SESSION['PROJECT']['MODULE']['AREASINFO'] la struttura della variabile di sessione, che conterr un array
- serialize la funzione php che usiamo per serializzare i dati.
Dopo l'inserimento, nel campo avremo dei dati di questo tipo

a:1:{i:1;a:6:{s:8:"areaname";s:4:"dfgh";s:8:"descarea";s:4:"dfgh";s:8:"typearea";s:1:"1";s:7:"invoice";s:1:"1";s:8:"billable";s:1:"1";s:5:"bonus";s:1:"0";}}


3) Quindi rileggo i dati nel seguente modo

$_SESSION['PROJECT']['MODULE'] ['AREASINFO']=unserialize($oProjectTable->getSessionVariable());

dove...
- getSessionVariable il metodo della classe ClassProjectTable che preleva il dato dalla tabella
- $_SESSION['PROJECT']['MODULE']['AREASINFO'] la stessa struttura della variabile di sessione, che ritorner ad essere un array.
- unserialize la funzione php che usiamo per deserializzare i dati.

Se quindi stampiamo i dati, avremo di nuovo la struttura e i dati originari dell'array

Array
(
    [1] => Array
        (
            [areaname] => dfgh
            [descarea] => dfgh
            [typearea] => 1
            [invoice] => 1
            [billable] => 1
            [bonus] => 0
        )

)