[RoLUG] variabili di sessione PHP

Chiarello Cristian ciarez@inwind.it
Sab 13 Mar 2004 20:19:35 CET


Dario Rigolin ha scritto:
> On Thursday 11 March 2004 17:08, Chiarello Cristian wrote:
> 
>>Per caso avreste un esempio?
>>Ho letto il manuale e per la versione che ho io (4.2.2) dice di usare la
>>variabile $_SESSION: da quel che ho capito io, è visibile sempre per
>>tutta la sessione.
> 
> 
> E' visibile (nel senso che è definita) sempre. E' nella tipologia di variabili 
> dette "superglobal" perchè sono presenti in tutti gli scope: metodi, funzioni 
> e classi.
> 
> 
>>Con sessione io intendo, con definizione bruta :), la serie di
>>opreazioni di un utente dal browser dal momento in cui si collega ad un
>>sito al momento in cui esce (meglio ancora se chiude il browser :)) ).
> 
> 
> Queste definizione è SBAGLIATA!!!  Sessione è semplicemente uno storage di 
> dati persistenti legati alla connessione che un'istanza di un browser 
> effettura verso la tua applicazione PHP. Session è server side!
> 
> 
>>Quindi, io ho fatto cosi':
>>
>>global $var_glob;
>>$var_glob = new miooggetto();
>>$_SESSION['nomevar'] = $varglob;
>>
>>dove miooggetto e' una classe da me definita.
> 
> 
> Fino a qua funziona ma devi fare session_start() prima oppure mettere 
> "session_autostart=on" su PHP.INI. Se non lo fai non andrà mai perchè non hai 
> mai detto a PHP di partire. Non capisco perchè fai global se non sei dentro 
> una funzione e vuoi vedere una variabile all'esterno non serve. 
> L'assegnamento in PHP è una copia quindi la tua ultima riga copia l'oggetto 
> dentro l'hashmap $_SESSION.
> 
> 
>>La vede solo nello script come se fosse locale, poi va persa :(
>>Qlc suggerimento? (anche senza var di sessione, basta che la variabile
>>la possa usare anche quando passo da una pagina ad un'altra)
>>Ciao!
> 
> 
> Credo di averti messo nella strada giusta. Se parti dagli esempi del PHP base 
> dovresti avere qualcosa che funziona.
> 
> Piccola nota sul fatto che stai mettendo una "CLASSE" in sessione. La sessione 
> serializza tutti i dati che le dai su un file per metterli al sicuro. C'è da 
> stare attenti quando metti in sessioni classi e non dati base: devi 
> ricordarti di includere la definizione della classe prima di fare 
> session_start(). session_start() va invocato in ogni pagina che vuole 
> accedere a $_SESSION.
> 
> Ciao!
> 
Grazie Dario per avermi indicato la retta via :)
A furia di prove c'ero arrivato: il problema era che non mettevo 
session_start() all'inizio del codice.
Con definizione di classe, intendi include("miaclasse.php") dove 
miaclasse è il file che ne contiene il codice?
Se è cosi' l'ho gia' messa in testa a tutti i file php del progetto che 
ora funziona :) e adesso so anche il perchè.
Leggo saltuariamente la mail in questi giorni perchè ho mezza bronchite 
e non riesco a cavarmela di dosso :(
Ciao a tutti!



Maggiori informazioni sulla lista RoLUG